现在我有一个基本的帖子请求,使用角度为$ http的服务。我在console.log中看到一切状态为200(成功),但在PHP中没有运气。我尝试过使用JSON_decode,我试过$ _POST(var_dump)没有运气。如果您能想到解决方案,请提供帮助。
app.js
var postData={
firstName:'something',
lastName:'here'
};
postData=JSON.stringify(postData);
$http({method:'POST',url:'sendmail.php',data:postData,headers: {'Content-Type': 'application/x-www-form-urlencoded'}})
.success(function (data,status,headers,config) {
console.log('Success' + data);
})
.error(function (data, status,headers,config) {
// uh oh
console.log('error' + status + data);
});
sendmail.php
$args = json_decode(file_get_contents("php://input"));
echo $args->firstName;
在我的php文件中,我收到以下错误。
注意:尝试在第3行的/Applications/MAMP/htdocs/my-new-project/sendmail.php中获取非对象的属性
然而,在我的console.log中,我得到了:
Successsomething
另外,我有一个有相同问题的实时网站。
重申无论我做什么,(添加标头,JSON解码)PHP数组仍为空。
答案 0 :(得分:1)
当您在AngularJS中使用$ http.post()时,您可以从$ _POST数组中获取PHP中的参数,如:
echo $_POST['firstName'];
如果$ _POST为空,那么你在其他地方就会出现问题。
尝试隔离您的问题。 您可以使用Postman,HTTPRequester或任何其他Firefox / Chrome插件来模拟对PHP脚本的请求。
首先使您的PHP脚本工作,然后使您的AngularJS帖子请求有效。
答案 1 :(得分:0)
这实际上与Angular如何传递数据有关。默认情况下,序列化为JSON格式,这会产生PHP问题。
我会假设您的数据来自某些输入或类似的东西。在表单字段
上使用ng-model更好基本上,您必须在请求中传递自定义标头。在这段代码中,我只使用一个输入:
$http({
method : 'POST',
url : 'your_url',
data : 'data-name=' + $scope.yourValue,//in PHP then you look for $_POST['data-name']
headers : {'Content-Type': 'application/x-www-form-urlencoded'}
}).then(
// success callback
function(response){
// success code
},
// error callback
function(response){
// success code
}
);
为了更好地掌握如何做到这一点,请阅读本文: