如何在IE上找到流氓Ajax请求的来源?

时间:2008-11-15 19:26:27

标签: javascript jquery ajax internet-explorer

我使用Javascript(JQuery)重写了我的家庭网站,在后端对php进行ajax调用。这是你的标准“一组图像缩略图和一个主要图像,当你点击缩略图时,主图像会改变”。使用Firefox时,一切都按预期工作,但在IE上,当我点击缩略图时,主图像变为我点击的图像,然后立即变回第一个。我试过MS Script Debugger无济于事;我在启动ajax调用的javascript代码中设置了一个断点,当我点击缩略图时,断点会触发。然后我按了F5然后继续,但不再发射。如果我使用Wireshark通过网络观察实际的TCP数据包,我可以看到我们肯定会向服务器发送多个请求。我无法弄清楚第二个查询(恢复到原始图像的查询)的来源。

有什么建议吗?我所谈论的一个例子是here

3 个答案:

答案 0 :(得分:3)

通过您的网站调试这里发生的事情:

第一个图像被处理后,抛出resize事件,因此调用此代码:

$(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 :(得分:1)

您可以使用Fiddler,一个免费的Internet Explorer调试代理。当我不得不在IE上调试特定的,与服务器相关的问题时,这对我很有帮助。

这是Introduction to Fiddler on MSDN

alt text http://i.msdn.microsoft.com/Bb250446.ie_introfiddler_fig04(en-us,VS.85).gif

答案 2 :(得分:0)

IE是一件工作不是吗?你尝试过这样的事吗?

var inProcess = 0;

function eventHandler(){

if (inProcess == 0) {

  inProcess = 1;

  // do stuff

  setTimeout('inProcess = 0', 5000);

}

}

顺便说一下,可爱的小孩。