我正在使用POST方法将HTML表单提交到REST(eXist db)Web服务。正常提交会发出400个错误请求
下面是我的HTML代码
<html>
<script type="text/javascript">
/* function createXMLHttpRequest()
{
if( typeof XMLHttpRequest == "undefined" )
XMLHttpRequest = function()
{
try
{
return new ActiveXObject("Msxml2.XMLHTTP.6.0")
}
catch(e) {}
try
{
return new ActiveXObject("Msxml2.XMLHTTP.3.0")
}
catch(e) {}
try
{
return new ActiveXObject("Msxml2.XMLHTTP")
}
catch(e) {}
try
{
return new ActiveXObject("Microsoft.XMLHTTP")
}
catch(e) {}
throw new Error( "This browser does not support XMLHttpRequest." )
};
return new XMLHttpRequest();
}
var AJAX = createXMLHttpRequest();*/
function submitForm()
{
//AJAX.open("POST",'http://localhost:8899/exist/rest/db/xql/sample.xq');
// AJAX.send(document.form.xmlData.value);
document.form.submit();
};
</script>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>
<form name='form' action="http://localhost:8899/exist/rest/db/xql/sample.xq" enctype="text/plain" method="post">
<input type="text" name="xmlData"/>
<input type="button" value="Submit" onclick="submitForm()";>
</form>
</body>
</html>
注解的代码是使用 AJAX 发送POST请求。我捕获了表单提交和AJAX提交的http头请求和响应。
HTML表单提交标题:
(Request-Line) POST /exist/rest/db/xql/sample.xq HTTP/1.1
Host localhost:8899
User-Agent Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20100101 Firefox/12.0
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip, deflate
Connection keep-alive
Content-Type text/plain
Content-Length 26
AJAX 请求标头:
(Request-Line) POST /exist/rest/db/xql/sample.xq HTTP/1.1
Host localhost:8899
User-Agent Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20100101 Firefox/12.0
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip, deflate
Connection keep-alive
Content-Length 16
Content-Type text/plain; charset=UTF-8
Origin null
Pragma no-cache
Cache-Control no-cache
我没有得到我的代码有什么问题。我在这个工作了2天,但我没有找到任何解决方案。请调查这一点,并提供一个解决方案。
先谢了。
4条答案
按热度按时间mtb9vblg1#
我敢肯定这是因为你只发送了数据中的值。
您需要发送一个名称=值对。
irlmq6kh2#
你的代码向服务器提交了它应该提交的数据。你的服务器端代码一定有问题。
引用www.example.com中checkupdown.com关于错误400的内容
HTTP周期中有400个错误
1.任何客户端(例如您的Web浏览器或我们的CheckUpDown机器人)都会经历以下循环:
2.从站点的IP名称(不带前导“http://”的站点URL)获取IP地址。此查找(IP名称到IP地址的转换)由域名服务器(DNS)提供。
3.打开到该IP地址的IP套接字连接。
4.通过该套接字写入HTTP数据流。
5.接收从Web服务器返回的HTTP数据流作为响应。此数据流包含状态代码,其值由HTTP协议确定。请分析此数据流以获取状态代码和其他有用信息。
当客户端接收到识别为“400”的HTTP状态代码时,会在上述最后一步中发生此错误。
zf2sa74q3#
您的目标接受POST请求,还是只接受GET请求?
0pizxfdo4#
但是您没有使用 AJAX POST发送任何参数?
AJAX 代码应该如下所示: