Установить точку останова в XHR в Chrome - PullRequest
21 голосов
/ 14 июля 2010

У меня есть страница, которая отправляет запрос XHR при отправке формы, и я хотел бы, чтобы Chrome ломался при получении ответа.Похоже, что лучший способ сделать это было бы, если бы в Chrome была функция javascript, которую я могу вызвать, которая прерывает выполнение, но я пока не смог найти ничего подобного.Есть ли другое решение?

Редактировать :

У меня фактически нет обратного вызова, определенного для запроса, поэтому я не могу установить точку останова таким образом.Запрос отправляется с этой строкой кода jquery:

$.post(this.action, $(this).serialize(), null, "script");

, где this - элемент формы.Аргумент null - это то место, где вы обычно определяете обратный вызов, но с аргументом "script" необработанный javascript возвращается сервером и затем выполняется напрямую, поэтому кажется, что единственный способ разбить и пройти по коду - использовать debugger; заявление.Это работает, но когда вы шагаете по коду, вы не можете видеть, на какой строке вы находитесь, поэтому это немного неловко.Я подозреваю, что это ограничение инструментов отладки Chrome.

Ответы [ 3 ]

15 голосов
/ 26 апреля 2014

выпадающий в Chrome консоли (Ctrl + Shift + J) и введите любой из них:

Просто переписать jquery ajax:

var prevajax = jQuery.ajax;
jQuery.ajax = function () { debugger; return prevajax.apply(jQuery, arguments); };

или если вы не используете JQueryпереписать класс xhr:

var prevxhr = XMLHttpRequest;
XMLHttpRequest = function (){debugger; prevxhr.apply(this, arguments);};

После его прерывания просто нажимайте Shift + F11, пока не найдете метод, который инициирует запрос AJAX.

13 голосов
/ 15 июля 2010

Вы можете просто установить точку останова в обратном вызове успеха и пройти через отладчик. Чтобы установить точку останова:

  1. Откройте «Инструменты разработчика» и перейдите на вкладку «Сценарии» вверху.
  2. Выберите сценарий, содержащий обратный вызов для вашего AJAX-запроса.
  3. Щелкните номер строки слева, где вы хотите установить точку останова. Появится синяя стрелка, указывающая, что точка останова установлена.
  4. Затем сделайте запрос AJAX, как и вы, и отладчик автоматически остановится на заданной вами точке останова.

Кроме того, вы можете использовать оператор debugger для автоматического запуска отладчика. Таким образом, ваш успех обратного вызова может выглядеть так:

success: function(data, textStatus, request) {
    debugger; // pause execution and opens debugger at this point
    ...
}

Также зацените эту замечательную статью для отладки JavaScript.

Тем не менее, первый подход лучше, так как он не требует от вас изменения кода.

11 голосов
/ 27 марта 2013

Вы также можете перейти на вкладку «Сценарии» в инструменте разработчика, а справа щелкнуть «Точки останова XHR» и добавить новую точку останова с фильтрацией URL.

Если вы используете jQuery, то при возникновении точки останова вы можете использовать CallStack, чтобы найти функцию, которая вызвала jQuery.ajax.

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