4

我正在尝试使用 ajax xmlhttprequest post 方法将一些 html 数据发送到 php 脚本。但由于某种原因,我的 XHR POST REQUEST 被切断,并非所有数据都传输到我的 doit.php 脚本。然而,来自 textarea 表单的相同 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);
4

2 回答 2

4

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

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

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

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

var_dump($_POST);
于 2013-02-03T21:36:30.617 回答
0

由于 URL 中的问号和名称/值对,这对我来说似乎是一个 GET 请求:

http://www.mysite.com/doit.php?Name=test&Id=12345

以下是使用 AJAX 发出 POST 请求的方法:

http://www.javascriptkit.com/dhtmltutors/ajaxgetpost2.shtml

于 2013-02-03T21:03:02.223 回答