2015-03-13 3 views
0

Я только что начал строить свой первый проект 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" 
}) 

UPDATE Я заметил, что в настоящее время с $ http.post, пост получает перехвачены как GET на сервере.

Если кто-то может помочь, это было бы здорово :)

ответ

0

Вы должны попробовать это

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

При работе с Джанго, то кажется, что будет работать с помощью JQuery $ параметров

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

Пробовал, и это не помогло, теперь я заметил, что запрос отправляется как POST, но django воспринимает его как GET. – sid802

+0

обновил ответ для сопоставления с django. Это должно работать – Unex

+0

Спасибо! что очень помогло. Странно, что $ http.post иногда перехватывается как сообщения GET и что-то вроде POST. во всяком случае, он также никогда не перехватывается как запрос ajax – sid802

0

Во-первых, defualt преобразования в $ http использует JSON. Вы можете проверить это в «Преобразовании по умолчанию» из документа API $http, вам необходимо установить это согласно вашему серверу, если ему необходимо принять формат application/x-www-form-urlencoded.

Тогда вот моя форма данных, которые я нахожу в Chrome DevTools:

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

я не получаю с запятой в конце.

Смежные вопросы