2010-06-16 118 views
1

那么我希望一切都会最终正常工作。但它当然不是。新的问题是以下消息:XMLHttpRequest请求URI太大(414)

请求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); 

} 

回答

3

你应该通过send方法在请求主体立柱rowData。因此,不要发布到"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); 
+0

喜。我试过你的代码,但现在我没有得到我的PHP脚本中的数据: PHP: $ q = $ _GET [“q”]; \t echo $ q; – user366121 2010-06-16 13:31:45

+0

@usurper:你需要使用'$ _POST'超全局数组:'$ q = $ _POST ['q']; echo htmlspecialchars($ q);' – 2010-06-16 14:26:51

+0

hmmm。这是我使用$ q = $ _POST ['q']后得到的结果:: 未定义变量:q – user366121 2010-06-16 14:48:58

相关问题