【发布时间】:2015-03-01 01:23:42
【问题描述】:
我正在使用原生 JavaScript 发送带有 JSON 数据的 AJAX 发布请求:
xhr.open(method, url,true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.send(JSON.stringify(data));
标题看起来不错,但在 PHP 中 $_POST 是空的。关于这个有几个相关的问题,比如this one,但他们都建议使用:
json_decode(file_get_contents("php://input"))
但是,如果我使用jQuery.post,我的变量最终会出现在$_POST,所以它一定是可能的。我的问题是怎么做?我可能做错了什么?或者我可以改变什么?
【问题讨论】:
-
如果你想使用
$_POST,那么你需要发送application/x-www-form-urlencodedheader,而不是application/json。 -
我认为最好的办法是将其作为 JSON 发送,并使用
json_decode(file_get_contents("php://input"))而不是 $_POST。这实际上只是一种偏好,但在我看来,发送 JSON 更有意义,因为它比 $POST 变量更具表现力。 -
我可能会在不同的情况下这样做@Juan Mendes,但我使用的是 PHP 框架 Slim,如果我使用 json,它不会在 $app->post 处理程序中获取我的 post 变量,所以这就是为什么我要问如何获取正常的 $_POST 变量并仍然使用 json 编码来发送数据。
标签: javascript php jquery ajax post