我正在测试angularjs的简单ajax请求,但它似乎无法正常工作。请求已经完成,我得到200,但数据没有通过。
$http({
url: "myphp.php",
method: "GET",
dataType: "json",
data: {"foo":"bar"}
}).success(function(data, status, headers, config) {
console.log(data);
}).error(function(data, status, headers, config) {
$scope.status = status;
});
<?php
echo var_dump($_GET);
?>
与get和post相同的结果。如果我试图访问$ _GET ['foo'],我会得到一个未定义的索引异常。
我做错了什么?
答案 0 :(得分:2)
问题是您的数据是以JSON编码的正文({dataType: "json", data: {"foo": "bar"}}
)发送到您的PHP的。不是GET / POST参数。
当您在正文中传递数据并且您的PHP尝试在$ _GET中检索时,您将获得undefined index
。
不确定PHP中的正确方法,但它应该是这样的:
$requestBody = file_get_contents('php://input');
$requestBody = json_decode($requestBody);
答案 1 :(得分:0)
因为PHP不接受JSON 'application/json'
,所以您需要适当地从角度更新标题和参数。
首先,参数化您的数据:
data: $.param({ "foo": $scope.fooValue })
然后,将以下内容添加到$http
headers: {
'Content-Type' : 'application/x-www-form-urlencoded; charset=UTF-8'
},
如果您的所有请求都转到PHP,则可以在配置中将参数设置为全局,如下所示:
myApp.config(function($httpProvider) {
$httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
});