Как я могу найти источник мошеннических запросов Ajax на IE? - PullRequest
1 голос
/ 15 ноября 2008

Я переписал свой семейный веб-сайт, используя Javascript (JQuery), делая ajax-вызовы php на серверной части. Это ваша стандартная «куча миниатюр изображений и одного основного изображения, и когда вы нажимаете на миниатюру изображения, основное изображение меняется». При использовании Firefox все работает, как и ожидалось, но в IE, когда я нажимаю на миниатюру, основное изображение меняется на то, на которое я нажал, а затем сразу же возвращается к первому. Я пробовал MS Script Debugger безрезультатно; Я устанавливаю точку останова в коде javascript, который запускает вызов ajax, и когда я нажимаю на миниатюру, точка останова срабатывает. Затем я нажимаю F5, и она продолжается, но снова не срабатывает. Если я использую Wireshark для просмотра реальных пакетов TCP по сети, я вижу, что мы определенно отправляем более одного запроса на сервер. Я не могу понять, откуда поступает второй запрос (тот, который возвращается к исходному изображению).

Есть предложения? Одним из примеров того, о чем я говорю, является здесь .

Ответы [ 3 ]

3 голосов
/ 16 ноября 2008

Отладка на вашем сайте, вот как это выглядит:

После обработки первого изображения генерируется событие изменения размера, поэтому вызывается следующий код:

$ (window) .bind ("resize", function () {ResizeWindow ('nicholas-1');}) ;;});

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

Для дальнейшего использования для отладки я использовал VS2008 для подключения к IE. Затем я помещаю разрыв в $ ajax () в:

    // Send the data
    try {
        xhr.send(s.data);
    } catch(e) {
        jQuery.handleError(s, xhr, null, e);
    }

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

Удачи.

1 голос
/ 15 ноября 2008

Вы можете использовать Fiddler , бесплатный отладочный прокси для Internet Explorer. Много раз мне очень помогало, когда мне приходилось отлаживать определенные, связанные с сервером проблемы в IE.

Вот Введение в Fiddler на MSDN .

альтернативный текст http://i.msdn.microsoft.com/Bb250446.ie_introfiddler_fig04(en-us,VS.85).gif

0 голосов
/ 15 ноября 2008

IE - это работа, не правда ли? Вы пробовали что-то подобное?

var inProcess = 0;

функция eventHandler () {

if (inProcess == 0) {

  inProcess = 1;

  // do stuff

  setTimeout('inProcess = 0', 5000);

}

}

Кстати, милый парень.

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