无法使用$ .ajax读取POST数据

时间:2015-07-20 23:18:56

标签: javascript php jquery ajax

我有一个超级简单的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控制台没有打印出任何错误消息。

任何想法都可能出错?谢谢!

1 个答案:

答案 0 :(得分:0)

PHP没有按预期填充$ _POST,因为您正在将标头设置为JSON。我相信它的默认值是url-form-encoded。

要么不定义内容类型,要么您希望发送实际的JSON,您可以通过执行以下操作来实现:

$postdata    = file_get_contents('php://input');
$request     = json_decode($postdata);
$credentials = $request->credentials;