我有一个超级简单的JS代码,发布到我的本地服务器。JS和PHP都在本地主机上,所以我现在不担心跨站点问题。这是我的JS:
var ENDPOINT_BASE = '';
var ENDPOINT_USER_LOGIN = { url: '/user/login', method: 'POST'};
var ENDPOINT_USER_REGISTER = { url: '/user/register', method: 'POST'};
var toSend = {'credentials': { 'email':'1', 'password':'123'}};
$.ajax({
method: ENDPOINT_USER_LOGIN.method,
url: ENDPOINT_BASE + ENDPOINT_USER_LOGIN.url,
contentType: "application/json",
data: toSend
});
我的PHP很简单:
<?php
print_r($_POST);
在Chrome调试器中,我可以看到网络调用正在进行,但是在$_POST
中接收到的响应总是空的(它打印出Array()
)。
如果我在PHP中添加类似echo "abc";
的内容,我可以在响应中看到它,因此它正确地击中了该URL。
我使用的是jQuery 2.1.4。
JS控制台没有输出任何错误消息。
有什么不对的吗?谢谢!
发布于 2015-07-20 23:34:15
PHP没有像您预期的那样填充$_POST,因为您正在将头设置为JSON。我认为它的默认格式是url格式编码的。
要么不定义内容类型,要么如果您希望发送实际的JSON,您可以通过执行以下操作来实现这一点:
$postdata = file_get_contents('php://input');
$request = json_decode($postdata);
$credentials = $request->credentials;
https://stackoverflow.com/questions/31527884
复制相似问题