我目前正在node.js上开始一个新项目。我是node.js的新手,所以我可能仍然会犯错误。 在此之前,我一直在将客户端代码与我的php代码混合在一起。现在,因为Node.js不能做PHP,我必须将我的Javascript与PHP分开。我解决这个问题的方法是使用AJAX。
截至目前,我的客户端代码和PHP在同一台计算机上运行,但在2个不同的服务器上运行(Node.js和Apache)。如果有的话,我无法想出更好的方法。我选择了jQuery来测试这个设置,因为我过去已经成功使用它了。
我为后端服务器准备了一个小PHP脚本,它返回$ _GET变量的内容。
<?php
header('Access-Control-Allow-Origin: *');
header('Content-Type: application/json');
echo $_GET['callback']."(".json_encode($_GET).")";
在客户端,这是我所拥有的:
$.ajax({
url:"http://localhost/backend/index.php",
dataType: 'jsonp',
method: "GET",
data: {
name: 'John Doe',
},
success:function(json){
console.log("Success");
console.log(json);
},
error:function(){
console.log("Error");
}
});
由于CORS,我认为我只能使用jsonp选项。当我运行此代码时,它运行良好,我的控制台显示以下对象:
{
callback: "jQuery33107847483665543953_1517785619328",
name: "John Doe",
_: "1517785619329"
}
我真的不了解回调和_属性,但它确实有效,所以我很高兴。
但是现在,我想通过POST而不是GET发送我的数据。
在我的AJAX代码中,我将method: "GET"
替换为method: "POST"
。
我没有碰到PHP代码中的任何内容。
我希望我的脚本返回一个空对象或没有name属性的同一个。
相反,它会发回完全相同的对象。看起来我的代码不想以POST发送数据。
然后,如果我将PHP代码的最后一行修改为下面的内容,我得到一个空数组作为回报:
echo $_GET['callback']."(".json_encode($_POST).")";
我很困惑,因为我从未遇到过这个问题。我多次使用AJAX。
任何人都知道发生了什么事?
非常感谢!