获取$ http.put()以发送格式正确的数据,而不是JSON对象

时间:2014-08-25 07:27:20

标签: angularjs angular-http

所以,我花了一些时间为我自己做的项目构建了一个快速API。

我使用Chrome的Postman插件来模仿PUT和DELETE任务,以确保一切正常。真的很高兴我这样做了,因为我学到了很多关于PHP与PUT和DELETE请求的缺点。

使用我曾与Postman合作过的API,我开始将所有内容移到AngularJs控制器等等。

我正在尝试让用户在数据库中声明一行,因为用户的登录信息与此特定信息不同。我无法弄清楚为什么在我的数据库中声明行的put请求不起作用。瞧,从我的parsestr(file_get_contents('php://input'))解析的数据有1个数组键,这是一个JSON字符串。

我看了,似乎无法通过Stackoverflow或Google找到一个可靠的答案(也许我在配置选项的某个地方错过了),所以我的问题是:有什么方法我可以让$http.put调用正确地将数据发送到服务器吗?

1 个答案:

答案 0 :(得分:0)

感谢用户Chandermani将我指向this URL的链接,该链接回答了我的问题。

从上面的链接中,我发现自己在另一位用户提交的This Blog post上。最后,我最终做的是:

从上面的链接中获取param()函数,以及实现以下代码行:

var app = angular.module('ucpData', [] , function($httpProvider){
        $httpProvider.defaults.transformRequest = [function(data) {
            return angular.isObject(data) && String(data) !== '[object File]' ? param(data) : data;
          }];
    });

我是如何解决这个问题的。对于一些开发人员,您可能实际上想要保留默认的transformRequest设置,但对于我正在进行的项目,我知道我最终会忘记在某个时候调用param(),而我的服务器并不自然无论如何接受json数据。我会提醒未来的开发人员在他们直接改变transformRequest数组之前考虑他们试图做什么。