2012-05-30 40 views
2

我提交HTML表单REST(eXist的DB)使用POST method.A正常提交Web服务是给400错误的请求HTML表单提交给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请求。 我捕获的HTTP标头请求和响应形式提交和AJAX提交 这些是请求报头:

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天,但我找不到任何解决方案。 请仔细研究并提供解决方案。

在此先感谢。

+0

@mavroscy你不说!但是这里的问题是导致错误的原因。 –

+0

请发布精简版的代码以获得正确的响应。另外,发布服务器端代码将会有所帮助。 – SuperSaiyan

+0

服务器端代码是由一些其他的IM也试图接收代码 – Sowmya

回答

0

我很确定这是因为您只发送数据中的值。

您需要发送一个名称=值对。

+0

可以给我一个例子吗? – Sowmya

+0

我无法真正从手机浏览器中编写实际代码,但不仅要查看标题,还要查看实际数据。您的Ajax方法和浏览器原生提交有区别。 –

+0

也任何人愿意帮助和写一些很好的示例代码,我将不胜感激。 –

0

您的代码会将数据合并到服务器。你的服务器端代码一定有问题。

HTTP循环从checkupdown.com报价约400错误

400错误

1.Any客户端(例如Web浏览器或我们的CheckUpDown机器人)经过以下循环:

2.从网站的IP名称(没有前导'http://'的网站URL)获取IP地址。此查找(IP名称到IP地址的转换)由域名服务器(DNS)提供。

3.打开IP套接字连接到该IP地址。

4.通过该套接字写入HTTP数据流。

5.接收来自Web服务器的HTTP数据流作为响应。该数据流包含其值由HTTP协议确定的状态码。解析这些数据流以获取状态码和其他有用的信息。

当客户端收到一个HTTP状态码,它会识别为'400'时,在上面的最后一步发生此错误。

+0

我想提交没有AJAX的表单。 – Sowmya

+0

我以为你想提交一个AJAX请求。对于使用简单的发布请求,您的代码对我来说看起来很好。更好地检查你的服务器端代码 – MaVRoSCy

+0

好的谢谢你的答复,我会检查 – Sowmya

0

您的目标是接受POST请求还是只接受GET?

+0

它将接受POST和GET请求 – Sowmya

0

但是,您不使用Ajax POST发送任何参数?

Ajax代码应该是这个样子:

var xmlData=encodeURIComponent(document.getElementById("xmlData").value); 
var parameters="xmlData="+xmlData; 
AJAX.open("POST", "'http://localhost:8899/exist/rest/db/xql/sample.xq", true) 
AJAX.setRequestHeader("Content-type", "application/x-www-form-urlencoded") 
AJAX.send(parameters)