#python #google-app-engine #jquery #jquery-post
#python #google-app-engine #jquery #jquery-post
Вопрос:
Я успешно выполнил публикацию в jQuery. Однако, чтобы получить данные, возвращенные со стороны сервера. Кто-нибудь может привести пример, как это можно сделать в Google App Engine (Python) с использованием webapp framework?
Если возможно, мне нужен пример:
- Как мы можем отправлять данные json в шаблон.
- Из шаблона, как мы можем получить доступ к функции json после успешного выполнения jQuery post.
- Я был бы очень, очень признателен, если бы кто-нибудь мог опубликовать это на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 упростил:
data_json = []
создайте пустой массивdata_json.append({ 'data1': first-item, 'data2': second-item, ...})
— добавьте столько данных, сколько вам нужноoutput = json.dumps(data_json)
создайте вывод jsonself.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 ошибки:
- Итак, ранее последний параметр «json» был отменен.
- После импорта django.utils.simplejson в формате json я допустил одну глупую ошибку, когда использовал simplejson.dumps вместо json.dumps. (В основном, неправильная переменная)