Путать с данными JSON и обычными данными в запросе Ajax Django - PullRequest
0 голосов
/ 02 июля 2011

Я читал о JSON из интернета, но до сих пор не понял этого.Я читаю эту статью

http://webcloud.se/log/AJAX-in-Django-with-jQuery/

Я не мог понять первую часть, где функция использует JSON

def xhr_test(request, format):
    if request.is_ajax():
        if format == 'xml':
            mimetype = 'application/xml'
        if format == 'json':
            mimetype = 'application/javascript'
        data = serializers.serialize(format, ExampleModel.objects.all())
        return HttpResponse(data,mimetype)
    # If you want to prevent non XHR calls
    else:
        return HttpResponse(status=400)

Мои основные проблемы

  1. Откуда функция получает format переменная
  2. Имеет ли формат json означает, что данные, переданные функции, - это json, или данные, которые будут получены, - это json
  3. Можеткто-нибудь привел мне простой пример того, что будет выходом этой функции data = serializers.serialize(format, ExampleModel.objects.all())
  4. Как я буду использовать эти данные, когда получу ответ в функции jquery
  5. Если я не использую JSONв приведенной выше функции, то как будет вход и ответ обратно будет изменен

Спасибо

Ответы [ 2 ]

1 голос
/ 02 июля 2011
  1. Откуда функция получает переменную формата

На практике существует множество способов заполнения этого формата. HTTP предоставляет заголовок Accept:, который запросы могут использовать для указания предпочтительного Content-Type для ответа. На клиенте вы можете использовать xhr.setRequestHeader('accept', 'application/json'), чтобы сообщить серверу, что вы хотите получить ваш ответ в формате json. На практике, однако, очень немногие фреймворки действительно делают это. Это django, аргументы для просмотра функций обычно устанавливаются в urlconf, вы можете создать urlconf следующим образом:

urlpatterns = patterns('', 
    # ...
    (r'^xhr_test.(?<format>.*)$', 'path.to.xhr_test'),
)

2. Формат json означает, что данные, переданные функции, - это json, или данные, которые будут получены, - json

Это конкретное представление вообще ничего не делает с телом запроса и, безусловно, предоставляет тело ответа в предоставленном format

4. Как я буду использовать эти данные, когда получу ответ в функции jquery

В зависимости от того, насколько сложным должен быть ваш запрос, вы можете использовать jQuery.getJSON, который передаст ваш обратный вызов с обычными объектами JavaScript, полученными в результате анализа JSON. Если вам нужно проделать немного больше работы, чтобы правильно выполнить запрос, вы можете использовать jQuery.parseJSON для обработки данных json, и это будет возвращать те же объекты JavaScript.

0 голосов
/ 02 июля 2011
  1. Из urlconf, как сказано в статье прямо под ним.
  2. Набор запросов будет сериализован как JSON.
  3. Это будет набор запросов, представленный в видеили XML или JSON.python manage.py shell - ваш друг.
  4. Вы расшифруете его, затем выполните итерации по нему.
  5. Вместо этого вам нужно будет найти какой-то другой формат для сериализации.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...