Javascript AngularJS$http.post在成功回调时返回一个空变量

Javascript AngularJS$http.post在成功回调时返回一个空变量,javascript,php,angularjs,Javascript,Php,Angularjs,在angular应用程序中,我试图将数据发送到php脚本,然后返回回调 这是角度代码: var data = { value: 'somestring' }; $http.post("post_backend.php", data).success(function(data, status) { alert(data + status); }).error(function(data, status) { alert(data + status); }); 在我的php代码

在angular应用程序中,我试图将数据发送到php脚本,然后返回回调

这是角度代码:

var data = { value: 'somestring' };

$http.post("post_backend.php", data).success(function(data, status) {
    alert(data + status);
}).error(function(data, status) {
    alert(data + status);
});
在我的php代码中,我有一个简单的回调函数:

if (isset($_POST['value'])) {
    header('Content-Type: application/json');
    echo json_encode('successful callback');
    exit();
}
但当它执行时,我会在警报消息中获得一个成功状态,除此之外什么都没有。
我没有得到数据(“成功回调”),并且大约几个小时都无法确定问题出在哪里?

尝试重新发送一个正确的JSON,例如echo JSON_encode(['status'=>'successful callback'])

这段代码对我有用

$params = json_decode(trim(file_get_contents('php://input')), true);
if (isset($params['value'])) {
    header('Content-Type: application/json');
    echo json_encode(['status'=>'successful callback']);
    exit();
}

我找到了答案。我必须重新配置将数据发送到php脚本的方式。我发现这篇文章非常有用:


我必须实现jquery并将头添加到请求中。在php脚本中,除了if语句和echo之外,我不需要任何东西。

看起来像
if(isset($\u POST['value'])
条件从未满足过。如果您
echo($\u POST)
,该怎么办?PHP收到了什么?@JeremyThille你是对的,不符合条件。但问题是什么?如何修复它?不要使用
alert()
,而是使用
console.log()
并在浏览器中打开开发工具,这样可以防止调试数据格式错误。另外,不要使用
+
运算符,而是使用逗号分隔参数,如:
console.log(数据、状态)
。确保控制台中没有错误,并检查“网络”选项卡以查看请求是否正确触发。@MyOwnFan
有什么问题?我该如何修复它?
这就是我们在这里想要了解的。因此,我的问题是“如果您
echo($\u POST)
?PHP收到了什么?”如果您回答:)@JeremyThille它返回一个空字符串,这将非常有用。正如我所说,你是对的,if语句没有触发。这不是问题的答案,只是一个建议。应作为注释放置。是否添加了$httpProvider.defaults.headers.post['Content-Type']='application/x-www-form-urlencoded;字符集=utf-8';你的申请?PHP不能正确使用“Content-Type:application/json”@Viktor我该怎么做?当我使用本文制作AngularJS+PHP应用程序时,应该有一种比获取文件内容更简单、更安全的方法。这是不安全的,需要指定从哪个文件接收输入。PHP应该作为一种服务来工作……回答您自己的问题是可以的。事实上,这是令人鼓舞的,因为它将在将来帮助其他人解决类似的问题。