AngularJS $ http.post数据无法访问服务器

时间:2015-03-13 08:40:31

标签: jquery django angularjs http-post

我刚刚开始构建我的第一个angularjs项目而且我遇到了$ http.post。无论我发送什么数据,它都不会被服务器拦截(Django)。我看过很多帖子说我必须将Content-Type headere更改为:

$http.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded";

这样做,没有帮助。

当我开始看起来更深入一点,比较$ http和Jquery的$ .post时,我注意到当数据以$ http发送时,这就是发送的表单数据:

{"first_prop":"789564","second_prop":"Foo","third_prop":"Bar"}:

最后用分号。

当我用$ .post发送它(并且它有效)时,这就是发送的内容:

first_prop:789564
second_prop:Foo
third_prop:Bar

所以,他们不会以同样的方式发送信息。

有人知道我在$ http.post做错了吗?

以下是我的代码:

$http.post('pakashnotifier/addSlave', {
first_prop:"789564",
second_prop:"Foo",
third_prop:"Bar"
})

更新 我现在注意到,使用$ http.post,帖子在服务器上被拦截为GET。

如果有人可以提供帮助,那就太棒了:)

2 个答案:

答案 0 :(得分:0)

你应该试试这个

$http.post('pakashnotifier/addSlave', {
    data : {
        first_prop:"789564",
        second_prop:"Foo",
        third_prop:"Bar"
    }
})

如果使用django,似乎可以使用jquery $ param

$http({ 
    method: 'POST', 
    url: '/url/', 
    data: $.param({
        first_prop:"789564",
        second_prop:"Foo",
        third_prop:"Bar"
    })
})

答案 1 :(得分:0)

首先,$ http中的defualt转换正在使用JSON。您可以在'默认转换'中进行检查。从API文档$http开始,如果需要接受application/x-www-form-urlencoded格式,则需要根据服务器进行设置。

然后,这是我在Chrome DevTools中找到的表单数据:

{"first_prop":"789564","second_prop":"Foo","third_prop":"Bar"}

我最后还没有得到分号。