2015-03-13 57 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"} 

我還沒有獲得在最後的分號。

相關問題