Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 数据未从ajax请求存储到$\u POST数组中_Php_Javascript_Ajax_Post - Fatal编程技术网

Php 数据未从ajax请求存储到$\u POST数组中

Php 数据未从ajax请求存储到$\u POST数组中,php,javascript,ajax,post,Php,Javascript,Ajax,Post,所以我已经用GET完成了一个AJAX请求,现在我想用POST试试运气。但出于某种原因,当我尝试发送数据时,控制台中会出现一条奇怪的消息-NS_ERROR_XPC_JSOBJECT_没有函数名:'JavaScript组件在调用方法:[nsInputStream::available]时没有名为:“available”的方法 我真的不知道这意味着什么,我知道数据没有通过,因为我请求的load.php文件中的所有内容都是回显它应该存储的变量。所以它是javascript中的一些东西 这是我的HTML,

所以我已经用GET完成了一个AJAX请求,现在我想用POST试试运气。但出于某种原因,当我尝试发送数据时,控制台中会出现一条奇怪的消息-NS_ERROR_XPC_JSOBJECT_没有函数名:'JavaScript组件在调用方法:[nsInputStream::available]时没有名为:“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>
最后是load.php的代码:

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

每次我运行这个,我都会在浏览器中看到“不工作”。因此php代码至少尝试存储变量,但它不是。谢谢

您忘记添加
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);
    }

您是否尝试过在
$\u POST
上打印
以查看它包含的内容?它输出“Array()”就这样。然而,在我发布问题后,我想到了一些事情,如果通过POST访问,输入必须在一个小时内提交,这可能是吗?还是要求它是一种形式?哇,就是这样!非常感谢!我在某个地方的一个例子中看到了这一点,但没有想到这是必需的!再次感谢@埃里克:很高兴帮助你:)
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);
    }