2015-03-13 92 views
0

我刚刚开始构建我的第一个angularjs项目,并被$ http.post卡住了。无论发送什么数据,它都不会被服务器拦截(Django)。我见过很多帖子说我必须将内容类型headere更改为:

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

这样做没有帮助。

当我开始显得有点深,比较$ http和jQuery的$。员额,我注意到,当数据与$ HTTP发送的,这是表单数据被发送:

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

用分号结尾。

当我用$。员额(和它的作品)发送,这就是被发送:

first_prop:789564 
second_prop:Foo 
third_prop:Bar 

因此,他们不发送信息的方式相同。

有没有人知道我在做什么错了$ http.post?

这里是我的代码:

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

UPDATE 我现在发现有$ http.post,帖子被截获的服务器一个GET。

如果有人能帮忙,那简直太好了:)

回答

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" 
    }) 
}) 
工作
+0

试过了,它没有帮助,我现在注意到请求是作为POST发送的,但django将它作为GET进行了区分。 – sid802 2015-03-13 09:15:46

+0

更新了与django匹配的答案。这应该工作 – Unex 2015-03-13 09:23:53

+0

谢谢!这帮助了很多。奇怪的是,$ http.post有时被截获为GET帖子和POST。无论如何,它也永远不会被拦截作为ajax请求 – sid802 2015-03-13 09:38:42

0

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

那么这里就是我在Chrome DevTools找到我的表单数据:

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

我还没有获得在最后的分号。