Публикация jQuery с возвращенными данными (json, xml и т.д.) С помощью Google App Engine (Python)

#python #google-app-engine #jquery #jquery-post

#python #google-app-engine #jquery #jquery-post

Вопрос:

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

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

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

Комментарии:

1. Вы не должны — и в значительной степени вы не можете — выполнять свою обработку в шаблоне. Сделайте это в коде Python.

Ответ №1:

Прежде всего, познакомьтесь с модулем 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 приведена строка, поэтому вы можете записать ее с помощью обычных методов. (Попробуйте это в интерактивном интерпретаторе)

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

Если вы говорите о публикации jQuery AJAX, вам придется сгенерировать (X) HTML / XML / что угодно на стороне сервера, ЕСЛИ, конечно, вы не вызываете загрузку какого-либо URL-адреса post-POST в iframe.

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

Ответ №2:

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. На самом деле, я знал, что это была часть self.response.out.write для GAE. На самом деле я искал ответ для получения объекта Json из сообщения jQuery Ajax..

2. Мой пример кода на apps.facebook.com/fileglu/technical содержит часть Ajax, также полностью прокомментированную.

Ответ №3:

На самом деле я искал ответ, как вернуть объект 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 я допустил одну глупую ошибку, когда использовал simplejson.dumps вместо json.dumps. (В основном, неправильная переменная)