ajax xmlhttprequest post方法有数据大小限制吗?我的xhr被截断了?

5

我想使用ajax xmlhttprequest post方法将一些html数据发送到php脚本。但由于某些原因,我的XHR POST请求被切断了,并没有将所有数据传输到doit.php脚本中。然而,同样的来自文本区表单的html数据通过普通的表单提交方法可以正确地传递到doit.php脚本!你们能帮助我解决这个问题,使我能够通过xhr请求传递这些html数据吗?

    var xmlhttp;
    if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
    else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    xmlhttp.onreadystatechange=function()
      {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
        document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
        }
      }
    xmlhttp.open("POST","http://www.mysite.com/doit.php?Name=test&Id=12345",true);
    xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    xmlhttp.send("outputtext="+siteContents);
2个回答

5

我认为您还应该对siteContents字符串进行encodeURIComponent()编码:

xmlhttp.send("outputtext=" + encodeURIComponent(siteContents));

这是因为POST变量是由一个&符号(&)分隔的。问题可能是您的字符串也包含一个&符号,这将被解释为新的POST变量的开始。

如果您在PHP脚本中输出所有接收到的POST变量,您可以轻松地检查这一点:

var_dump($_POST);

comfreak 非常感谢,那个方法完美地解决了我的问题。我花了几个小时尝试不同的方法!现在我的数据可以正确地发送而没有任何截断! - user1788736

0

+sitecontents 包含了我想要发布的数据! - user1788736
谢谢回复。我的POST请求可以工作,但只发送了部分HTML数据而不是全部数据到PHP页面! - user1788736

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接