XMLHttpRequest请求URI太大(414)

时间:2010-06-16 12:36:42

标签: uri xmlhttprequest

嗯,我希望一切都能顺利完成。但当然不是。新问题是以下消息:

  

请求URI太大
请求的URL长度超过   此服务器的容量限制。

我担心我必须找到另一种传输数据的方法,或者解决方案是否可行?

XHR功能代码:

function makeXHR(recordData)
{
if (window.XMLHttpRequest)
 {
 xmlhttp=new XMLHttpRequest();

 }
 else
 {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
 }

 var rowData = "?q=" + recordData;

 xmlhttp.open("POST", "insertRowData.php"+rowData, true);
 xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); 
 xmlhttp.setRequestHeader("Content-Length",rowData.length); 
 xmlhttp.setRequestHeader("Connection", "close");

 xmlhttp.onreadystatechange = function() 
 {
  if(xmlhttp.readyState == 4 && xmlhttp.status == 200) 
  {
   alert("Records were saved successfully!");
  }
 }

 xmlhttp.send(null);

}

1 个答案:

答案 0 :(得分:3)

您应该通过rowData方法在请求正文中发布send。因此,不要发布到"insertRowData.php" + rowData,而是发布到"insertRowData.php"并将rowData中的数据传递给send

我怀疑您的rowData是带有问号的查询字符串。如果是这种情况,则邮件正文只是rowData 而不是前置问号。

编辑:这样的事情应该有效:

var body = "q=" + encodeURIComponent(recordData);
xmlhttp.open("POST", "insertRowData.php", true);
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlhttp.onreadystatechange = // ...
xmlhttp.send(body);