2013-03-02 52 views
2

我正在测试angularjs的简单ajax请求,它似乎不工作。请求已经完成,我得到200,但数据没有通过。为什么ajax请求的数据使用angularjs为空?

$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']例如,我得到一个未定义的索引异常。

我在做什么错?

+1

什么是PHP的回报?回应的内容是什么? – 2013-03-02 04:16:33

+0

http://plnkr.co/edit/SEezJCY7ngBWy6W0IuJW如果这并不令人满意,请解释一下,如果可以的话,我怎样才能获得更多的信息使用php5.4内置的http服务器@CaioToOn – user2057574 2013-03-02 13:34:27

回答

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); 
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'; 
}); 
相关问题