AngularJS $ http.put PUT方法不发送数据

时间:2013-02-15 13:48:13

标签: javascript rest angularjs put http-method

我正在从jquery $ .ajax切换到正常工作,使用AngularJS $ http.put来访问一个安静的API。

我可以进行API调用,但PUT数据没有被发送 - 所以我的API看到一个带有空数据对象的PUT请求,该数据对象应该包含一个JSON字符串 - > data.values = 'a json structure'

$http.put(
    $rootScope.api_url,
        {
            values: jsonifiedValues
        },
        {
        headers: {
            apihash: sha256hash
        }
    }).success(function(data,status,headers,config){
        // handle success
}).error(function(data,status,headers,config) {
        // handle failure
});

之前我没有使用AngularJS的$ http,但是当我在PHP api中转储数据时,它只是空的。这就是我如何从PHP中的请求中提取它:

parse_str(file_get_contents('php://input'), $put_vars);  
$arr_req_data = $put_vars['values'];    

在我的API中,如果请求发送的apihash与PUT值上构建的sha256哈希不匹配,则会失败。

这是在JQuery中工作,只是失败现在我已切换到$ http。我不确定为什么PUT数据似乎是空的。

1 个答案:

答案 0 :(得分:1)

file_get_contents('php://input')的返回值将是一个JSON字符串(前提是所有内容都已发送),因此parse_str不是处理该数据的正确函数。
而是使用json_decode

此外,无需发送 jsonified值,只会使事情变得更复杂,因为您必须使用json_decode两次。