jquery.ajax,总是通过GET发送数据

时间:2018-02-04 23:24:30

标签: javascript php jquery node.js ajax

我目前正在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。

任何人都知道发生了什么事?

非常感谢!

0 个答案:

没有答案