我有一个超级简单的JS代码,可以POST到我的本地服务器。 JS和PHP都在localhost上,所以我现在不担心跨站点问题。这是我的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控制台没有打印出任何错误消息。
任何想法都可能出错?谢谢!
答案 0 :(得分:0)
PHP没有按预期填充$ _POST,因为您正在将标头设置为JSON。我相信它的默认值是url-form-encoded。
要么不定义内容类型,要么您希望发送实际的JSON,您可以通过执行以下操作来实现:
$postdata = file_get_contents('php://input');
$request = json_decode($postdata);
$credentials = $request->credentials;