2014-09-11 3 views
4

Я видел несколько из этих вопросов, но я попытался реализовать их решения, и это не сработало для меня.QueryDict всегда пусто от AJAX POST

Я пытаюсь отправить основной запрос AJAX в представление django с помощью POST. Вот мой JQuery:

$('#save-button').click(function() { 
    var names = ['BLOGGS Joe', 'SMITH John']; 
    data = JSON.stringify(names); 
    $.ajax({ 
     "contentType": "application/json; charset=utf-8", 
     "data": data, 
     "url" : "/ajax/myteam/save/", 
     "type": "POST", 
     "success": function(response) { 

     } 
    }); 
}); 

А вот мой Django вид:

def myteam_save(request): 
    if request.method == 'POST': 
     if request.POST: 
      print 'Hurray' 
     else: 
      print 'Boo' 
     response = HttpResponse(json.dumps({'code':'ok'}), content_type='application/json') 
     return response 

Когда я анализирую Что происходит в Firebug я вижу, что пост делается как я собираюсь, но объект QueryDict из запроса . POST всегда пуст.

Я был осторожен в отношении токенов csrf Я думаю и даже пытался отключить «django.middleware.csrf.CsrfViewMiddleware» в моих настройках, но это, похоже, не имеет никакого эффекта.

Что я делаю неправильно?

Благодарим за помощь!

+0

'" contentType ":" application/json; charset = utf-8 "' вы не отправляете JSON на сервер. Кроме того, это должно быть 'dataType: 'json'', чтобы сказать' функция успеха' обрабатывать 'response' как обрабатываемый JSON-объект. Что касается ответа django ... доступ к странице напрямую, отладка, пока вы не получите вывод, подтвердите вывод, действительно, json. – Ohgodwhy

+0

@Ohgodwhy спасибо за ответ. Тип содержимого был только я, пытаясь сопоставить код другого, чтобы исправить проблему и забыл изменить ее. Что вы имеете в виду, обратившись к странице напрямую (извините, если глупый вопрос)? – lac

ответ

4

Django не де-сериализует JSON полезной нагрузки для вас. request.POST предназначен для использования в HTML-форматах и ​​т. П.

Для грузовых автомобилей JSON вы должны де-сериализовать тело запроса самостоятельно, например: json.loads(request.body).

(request.body - это то, как вы получаете доступ к необработанной полезной нагрузке).

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