$ _POST不能与$ http POST一起使用

时间:2015-03-20 15:08:22

标签: javascript php angularjs

在我的controller.js中我喜欢这个

$http({
        url: 'http://example.com/api.php',
        method: "POST",
        data: { 'YTParam' : 'test' }
    })
    .then(function(response) {
            console.log(response.data);
        }, 
        function(response) { // optional
            // failed
        }
    );

我甚至检查了网络工具,param确实通过了。

在我的api.php中我尝试echo $_POST["YTParam"]但是在我的控制台中我什么都没看到?这有什么不对?我试图回应“字符串”,它确实出现了..

2 个答案:

答案 0 :(得分:1)

Angular没有设置服务器处理的标头,请尝试使用:

$_POST = json_decode(file_get_contents("php://input"), true);

答案 1 :(得分:0)

您的数据不在$_POST数组中,因为默认情况下您的angular JS contentType设置为application/json,而PHP请求application/x-www-form-urlencodedQuoting from docs

  

$ httpProvider.defaults.headers.post :( POST请求的标头默认值)

     

Content-Type:application / json

要更改此设置,请在配置中更改此值:

yourApp.config(['$httpProvider', function($httpProvider) {
    $httpProvider.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded";  
}]);

或者在您发送请求时:

$http({
    url: 'http://myURL.com/api/',
    method: "POST",

    headers: {
     'Content-Type': "application/x-www-form-urlencoded"
    },
    data: { 'YTParam' : 'test' }
})

您可以将contentType直接设为属性,但我不能100%确定。