Django: Существуют ли какие-либо инструменты / приемы для отладки ответа AJAX? - PullRequest
7 голосов
/ 09 ноября 2011

Обычно, когда я получаю 500 Internal Server Error от вызова ajax, я не вижу деталей ответа (потому что вы не хотите показывать их пользователям). А на стороне сервера я вижу только строку типа "GET /xxx/yyy/ HTTP/1.1" 500 1150336.

Без изменения моего клиентского кода (т. Е. Html / js), если это изменение не является минимальным и разовым, существуют ли какие-либо удобные инструменты или приемы, которые я могу использовать, чтобы просмотреть подробности ответа AJAX ( либо со стороны клиента, либо со стороны сервера, либо вместе)?

Использование программ захвата пакетов, таких как WireShark, здесь не вариант, так как это не упрощено с моим процессом отладки и, следовательно, не удобно.

Обратите внимание, что клиентская часть и сервер работают на одном компьютере.

Спасибо.

Ответы [ 5 ]

15 голосов
/ 09 ноября 2011
  1. Включить режим отладки
  2. Запустите хром
  3. Нажмите cmd + опция + j (инструменты open dev)
  4. Перейти на вкладку сети
  5. Нажмите на запрос ajax
  6. Нажмите на вкладку предварительного просмотра или ответа

Отлично! Я только что понял, что в Chrome реализован рендеринг ответа.

enter image description here

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

Что не так с базовой регистрацией Python? Вы можете настроить свои представления так, чтобы они регистрировались как запрос, ответ и любые исключения.

Если вы хотите получить хороший интерфейс для управления и просмотра исключений, вы можете использовать django-sentry , если хотите.

РЕДАКТИРОВАТЬ: Я думаю, вам нужно быть более точным в том, хотите ли вы отлаживать код интерфейса или бэкэнда. В идеале вам нужно и то, и другое, и хотя мой ответ основан на отладке бэкэнда (чтобы выяснить 500), все остальные являются хорошими предложениями для отладки интерфейса.

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

Используйте FireBug или Chrome Developer Tools.И то, и другое позволяет вам просматривать запросы и ответы на ваши вопросы, а также многое другое.

1 голос
/ 03 сентября 2015

Это довольно старый вопрос, но, поскольку я видел его в качестве справочного материала и имею немного другое решение, я подумал, что с тем же успехом могу добавить свои два цента.

Я использую python manage.py runserver_plus, который поставляется с расширениями django и дает вам потрясающий отладчик с возможностью открывать оболочку на каждом уровне трассировки стека с сохранением локальных переменных. Проблема в том, что при вызовах ajax интерфейс не отображался правильно, даже в окне предварительного просмотра. Мое решение состояло в том, чтобы найти вызывающий код JavaScript и при ошибке

  $.ajax({
            url : window.location.pathname,
            type : "POST",
            dataType: "json",
            data : dataPacket,
            success : function(json) {
                alert('it worked!');
            },
            error : function(xhr,errmsg,err) {
                if(xhr.status == 500){
                    document.open();
                    document.write(xhr.responseText);
                    document.close();
                }
            });

Это приводит к тому, что трассировка полного стека заменяет текущее окно. Удачной отладки!

0 голосов
/ 09 ноября 2011

Скрипач - твой друг.

Учись, используй, люби.

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