Почему jQuery не обрабатывает этот ответ JSON должным образом? - PullRequest
1 голос
/ 29 декабря 2011

Я ломал голову над этим уже полтора часа.Итак, я отправляю форму через $ .ajax и ожидаю ответ json от django.

На внешнем интерфейсе js выглядит следующим образом

        $.ajax({
            "type" : "POST",
            "url" : action,
            "dataType" : "json",
            "data" : serialized_form,
            "success" : function (data) {
                alert('hey')
                console.log(data);
                //$("#add_shipping").submit();
            },
            "error" : function (data) {
                alert(data)
            }
        });

На внутреннем концеdjango возвращает объект HttpResponse, заполненный сериализованным json, примерно так ->

        redirectUrl = '/user/purchase/' + str(purchase.pk) + '/'
        response_data = {}
        response_data['redirect'] =  redirectUrl
        response_data['status'] = 200

        rsp = HttpResponse(simplejson.dumps(response_data))
        rsp["CONTENT-TYPE"] = "application/json"

        return rsp

Когда jQuery получает ответ, а не регистрирует его на консоли, как я его просил, он просто отображает отформатированный jsonв браузере в окружении предварительно тегов.Я предполагаю, что это может иметь какое-то отношение к моему заголовку Content-type, но из того, что я могу сказать, он отвечает 'application / json'.Кто-нибудь может подумать, что я могу делать не так?Спасибо!

1 Ответ

2 голосов
/ 29 декабря 2011

Вы, вероятно, запускаете этот код в событии отправки формы без отмены отправки.

Поэтому браузер отправляет форму и переходит на эту страницу.

Добавить return false.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...