数据不会从ajax请求存储到$ _POST数组中

时间:2013-06-16 18:59:30

标签: php javascript ajax post

所以我已经使用GET完成了一个AJAX请求,所以现在我想用POST来试试运气。但由于某种原因,当我尝试发送数据时,我在控制台中收到一条疯狂奇怪的消息 - NS_ERROR_XPC_JSOBJECT_HAS_NO_FUNCTION_NAMED:'JavaScript组件在调用方法时没有名为:“available”的方法:[nsIInputStream :: available] 我真的不知道这意味着什么,而且我知道数据没有经过,因为我在请求的load.php文件中所做的所有操作都是回应它应该存储的变量。所以它在javascript中的东西。

以下是发出请求的第一页的HTML。

<!DOCTYPE html>
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script type="text/javascript" src="test.js"></script>
</head>
<body>

<div id="myDiv"><h2>Let AJAX change this text</h2></div>
<input id="input">

<button type="button" onclick="loadXMLDoc()">Change Content</button>

</body>
</html>

我的Javascript:

function loadXMLDoc()
{
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;
    }
  }
  var data = "id="+document.getElementById("input").value;
xmlhttp.open("POST","load.php",true);
xmlhttp.send(data);
}

最后,load.php的代码:

$param = $_POST['id'];
if($param){
        echo "Variable was stored.";
    } else{
        echo "Not working";
    }

每次我运行时,我都会在浏览器中“无法正常工作”。所以php代码至少试图存储变量,但事实并非如此。三江源!

1 个答案:

答案 0 :(得分:2)

您忘了添加xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')。通过这一行,我们基本上说数据发送采用表单提交的格式

function loadXMLDoc()
    {
        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;
            }
        }
          var data = "id="+document.getElementById("input").value;

        xmlhttp.open("POST","load.php",true);
        xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        xmlhttp.send(data);
    }