Я использовал команду $.getJSON некоторое время. Но так как я на самом деле отправляю сообщения на сервер, мне нужно использовать $ .post. Но как только я переключаюсь с $.getJSON на $.post, серверная часть, которая является платформой Flask Python, кажется, не получает никаких данных JSON. Это единственное, что я изменил. Документация для $ .post указывает на то, что формат то же самое для отправки данных с любой командой.

С $.getJSON я мог получить доступ к параметрам JSON во Flask с помощью команды request.args.get. Но после изменения на $ .post request.args будет пустым (поэтому request.args.get () всегда возвращает None). Вот строка JavaScript с $.getJSON:

$.getJSON("/admin/emails/ajax/send", {'data':JSON.stringify(data)}, function(){...})

А затем просто представьте эту строку с $.post(...) вместо этого.

РЕДАКТИРОВАТЬ Похоже, проблема заключается в том, что при переходе с «GET» на «POST» данные исчезают из объекта request.args Flask. Я попытался с помощью метода $.ajax и получил те же результаты. Кто-нибудь знает почему?

1
J-bob 31 Янв 2013 в 11:10

4 ответа

Лучший ответ

Просто разверните этого зверя и используйте $ .ajax, чтобы не запутаться в обёртках.

$.ajax({
    type: 'POST',
    url: '/admin/emails/ajax/send',
    data: JSON.stringify(data),
    dataType: 'json',
    success: function(json){
        //the JSON response from the server
    }
});
2
Ohgodwhy 31 Янв 2013 в 07:11

Вы пробовали $.post так:

$.post("/admin/emails/ajax/send", {'data':JSON.stringify(data)}, function(data){
   console.log(data);
}, "json");
//-^^^^^^-----------are you putting dataType here.
0
Jai 31 Янв 2013 в 07:21

ОК, я понял это. Если вы отправляете данные JSON на сервер методом GET, Flask помещает данные JSON в request.args. Если вместо этого вы отправляете данные методом POST, Flask помещает данные в request.form. Вроде запутанно, но что угодно.

1
J-bob 31 Янв 2013 в 18:33

Ответ выше верен, но если вы хотите использовать $ .post, вы должны перейти на серверную часть и добавить заголовок: «Content-type: app / json» (что-то вроде этого google it)

0
mikrowelt 31 Янв 2013 в 07:14