jQuery Post с возвращенными данными (json, xml и т. д.) с Google App Engine (Python) - PullRequest
2 голосов
/ 13 ноября 2011

Я успешно опубликовал jQuery. Однако для того, чтобы получить данные, возвращаемые со стороны сервера. Может кто-нибудь привести пример того, как это можно сделать в Google App Engine (Python) с помощью фреймворка webapp?

Если возможно, мне нужен пример:

  1. Как мы можем отправить данные JSON в шаблон.
  2. Из шаблона, как мы можем получить доступ к json после функции успешного завершения jQuery.
  3. Я был бы очень признателен, если бы кто-нибудь мог опубликовать его на http://jsfiddle.net

Ответы [ 3 ]

3 голосов
/ 13 ноября 2011

Прежде всего познакомьтесь с модулем json.Собственный модуль json не будет работать в appengine, поэтому сделайте так:

import django.utils.simplejson as json

Затем отформатируйте ваш объект как объект "json", как диктует Python,

obj = {"name": "foo", "age": 20}

Затем используйте json.dumps для получения объекта str, который представляет объект JSON.

json_obj = json.dumps(obj)

здесь, json_obj - строка, так что вы можете написать это, используя обычные методы.(Попробуйте это в интерактивном интерпретаторе)

После этого прочитайте эту страницу для получения информации о шаблонах в рамках веб-приложения (я использую Django, и я не уверен, использует ли веб-приложение то же самое)система шаблонов - хотя она выглядит аналогично, так что лучше читать)

Если вы говорите о JQuery AJAX POST, вам придется сгенерировать (X) HTML / XML / что угодно на стороне сервера,Если, конечно, вы заставляете загружать некоторые URL-адреса после POST в iframe.

Если это не отвечает желаемому, уточните свой вопрос немного.И очень маловероятно, что кто-нибудь отправит ответ с кодом в jsfiddle.

2 голосов
/ 15 ноября 2011

JSON стало проще:

  1. data_json = [] создать пустой массив
  2. data_json.append({ 'data1': first-item, 'data2': second-item, ...}) - добавить столько данных, сколько вам нужно
  3. output = json.dumps(data_json) создать выход JSON
  4. self.response.out.write(output)

Чтобы избежать междоменных проблем, вам нужно дополнить вывод (известный как JSON / P) функцией обратного вызова. padded_output = callback_fn + "(" + output + ")" где callback_fn - функция обратного вызова, отправляемая пользователем (обычно генерируется jQuery).

1 голос
/ 15 ноября 2011

Я на самом деле искал ответ, как вернуть объект Json со стороны сервера в пост jQuery ajax, который я написал. Итак, здесь я выяснил, что пошло не так из моего предыдущего решения:

Следовательно, решение было просто:

$.post("POST_URL", $("#form").serialize(),
        function(data){
             alert(data); //data returned from server side
        }, "json");

Итак, 2 ошибки, которые я сделал:

  1. Итак, ранее последний параметр "json" был отменен.
  2. После импорта django.utils.simplejson в качестве json я сделал одну глупую неосторожную ошибку, когда вместо json.dumps использовал simplejson.dumps (В основном, неправильная переменная)
...