【问题标题】:Where in JavaScript is the request coming from?JavaScript 中的请求来自哪里?
【发布时间】:2010-09-16 05:23:29
【问题描述】:

我正在调试一个包含大量 JavaScript、JQuery、Ajax 等的大型复杂网页。在该代码的某处,我收到了一个调用服务器根目录的 rouge 请求(我认为它是一个空的 img)。我知道它不在 html 或 css 中,并且非常确信在 JavaScript 代码中的某个地方正在发出请求,但我无法追踪它。我习惯于使用 firebug、VS 和其他调试工具,但我正在寻找一些方法来找出执行此操作的位置 - 这样我就可以在大约 150 个 .js 文件中找到有问题的行。

除了输入“你现在在这里”的大量控制台输出之外,是否有人对调试工具提出建议,该工具可以突出显示对外部资源发出 Javascript 请求的位置?还有其他想法吗?

逐步调试需要很长时间 - 我必须小心我进入的内容(jQuery 源 - yuk!),我可能会错过关键时刻

【问题讨论】:

  • 这应该用'jQuery'标记。

标签: javascript jquery debugging


【解决方案1】:

在 Firebug 中使用分步脚本调试器怎么样?

我还认为这可能是对 Firebug 的一个非常有趣的增强,能够在 AJAX 调用上添加断点。

【讨论】:

    【解决方案2】:

    你说的是 jQuery 源码...

    假设请求通过 jQuery,在 jQuery 源 get() 函数中放置一个调试语句,如果 URL 是 '/' 则启动。也许你可以从调用堆栈中看出。

    【讨论】:

      【解决方案3】:

      您可以使用Firebug 控制台查看所有通过 JavaScript 完成的 HTTP 请求。

      如果要手动跟踪所有 HTTP 请求,可以使用以下代码:

      $(document).bind('beforeSend', function(event, request, ajaxOptions)
      {
         // Will be called before every jQuery AJAX call
      });
      

      如需了解更多信息,请参阅jQuery documentation on AJAX events

      【讨论】:

        【解决方案4】:

        如果它是一个发送到 Web 服务器的 HTTPRequest,我建议在 Firefox 上使用 TamperData 插件。只需安装插件,启动篡改数据,发送的每个请求都会先提示篡改/继续/中止。

        访问this page at Mozilla website

        【讨论】:

        • 我试过这个。这是一个很酷的插件,但没有告诉我请求来自 JavaScript 中的哪个位置
        【解决方案5】:

        这里只是一个猜测,但您使用的是ThickBox 吗?它尝试在代码的开头加载图像。

        我要做的第一件事是通过 Firebug 的 Net 面板检查这个 rouge 请求是 Ajax 请求还是图像加载请求。

        如果它是 Ajax,那么您可以使用自己的重载 $.ajax 函数并执行 strack 跟踪并在移交给原始 $.ajax 之前包含请求的 URL。

        如果是图像,则不理想,但如果您可以通过服务器端睡眠(即仅睡眠 20 秒的 php 文件)来响应图像请求,您也许可以挂起应用程序并获得初步猜测至于问题可能出在哪里。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-02-25
          • 2014-02-25
          • 2011-04-06
          • 2020-01-11
          • 2016-11-24
          • 2010-09-21
          相关资源
          最近更新 更多