javascript - документация - diafan это




как правильно передать json-объект на сервер флеши, используя jquery ajax (2)

Вы можете отправить свой объект в виде строки JSON:

var data = {
    screening: '1',
    assistance: 'wheelchair access',
    guests: [
        {
            first: 'John',
            last: 'Smith'
        },
        {
            first: 'Dave',
            last: 'Smith'
        }
    ]
};

$.ajax({
    type: 'POST',
    url: window.location.href,
    data: JSON.stringify(response),
    dataType: 'json',
    contentType: 'application/json; charset=utf-8'
}).done(function(msg) {
    alert("Data Saved: " + msg);
});

И затем используйте request.json для доступа к нему.

Я хочу передать объект json, который содержит вложенные объекты от моего клиента к моему серверу.

на стороне клиента моя структура данных выглядит так:

var response = {};
response['screening'] = '1';
response['assistance'] = 'wheelchair access';
response['guests'] = {};
response['guests']['1'] = {}
response['guests']['1']['first'] = 'John'
response['guests']['1']['last'] = 'Smith'
response['guests']['2'] = {}
response['guests']['2']['first'] = 'Dave'
response['guests']['2']['last'] = 'Smith'

и мой вызов ajax выглядит следующим образом:

$.ajax({
  type: "POST",
  url: window.location.pathname,
  data: response
 }).done(function( msg ) {
   alert( "Data Saved: " + msg );
 });

после размещения этих данных на моем сервере, который запускается с использованием флагов python, я использую объект request.form для проверки того, что было опубликовано от клиента. я хотел бы, чтобы данные были структурированы одинаково, однако это результат на сервере:

ImmutableMultiDict([('guests[1][first]', u'John'), ('screening', u'2'), ('guests[2][last]', u'Smith'), ('guests[2][first]', u'Dave'), ('assistance', u'wheelchair access'), ('guests[1][last]', u'Smith')])

как вы можете видеть, объект ответа [гостей] был сплющен, и все его дети, такие как:

'Гости [2] [первый]

... это всего лишь строки, а не элементы их родительского ответа [«гости»].

есть ли лучший способ отправить этот блок данных от моего клиента на мой сервер и правильно поддерживать его структуру?

благодаря!


На стороне клиента вам необходимо преобразовать этот объект javascript в строку json. Для этого вы можете использовать это:

JSON.stringify(my_object) // This will return a string that you can pass in you ajax request

Затем на стороне сервера вам необходимо преобразовать этот объект в dictionnary python с помощью модуля json:

import simplejson
my_new_object = simplejson.loads(my_json) // my_json is my_object from the client (previously called my_object)

my_new_object теперь является словарем python, и вы можете делать с ним все, что хотите.





flask