没有简单直接的答案。
您必须对此进行调试,由于 URL 中存在“未定义”一词,它可能是 JavaScript。然而,它不一定是 AJAX,它可以是 JavaScript 创建任何由浏览器自动解析的 URL(例如,在图像标签上设置 src 属性、设置 css-image 属性等的 JavaScript)。我用Firefox http://www.mozilla.org/en-US/firefox/new/ with Firebug http://www.mozilla.org/en-US/firefox/new/大部分时间都是安装的,所以我的指导会考虑到这一点。
Firebug 初始设置
如果您已经知道如何使用 Firebug,请跳过此步骤。
安装并重新启动 Firefox for Firebug 后,您将必须启用 Firebug 的大部分“面板”。要打开 Firebug,浏览器右上角会出现一个看起来像火虫/昆虫的小东西,或者您可以按 F12。单击 Firebug 选项卡“控制台”、“脚本”、“网络”,然后打开它们并阅读面板信息来启用它们。您可能需要刷新页面才能使它们正常工作。
调试用户交互
导航到存在 Firebug 打开且“网络”面板处于活动状态的问题的页面之一。在网络面板中会有几个选项:“清除”、“保留”、“全部”、“Html”等。确保选择全部。不要在页面上执行任何操作,也不要将鼠标悬停在页面上的任何内容上。查看请求。对无效 URL 的请求将显示为红色,并且状态可能为 404 Not Found(或类似)。
看到加载了吗?跳到下一部分。
在初始加载时没有看到它?开始使用您的页面并在此处继续。
开始单击每个功能,将鼠标悬停在所有内容上,等等。密切关注“网络”面板并注意失败的请求。您可能需要发挥创意,但请继续使用您的应用程序,直到您看到浏览器发出无效请求。如果页面发出很多请求,请随时点击网络面板左上角的“清除”按钮来清除它。
如果您提交页面并看到失败的请求很快消失,但由于下一页加载而丢失,请通过单击“网络”面板左上角的“持久”来启用持久性。
一旦发生了,而且应该考虑一下你做了什么来实现这一点。看看你能否让它再次发生。在弄清楚是什么用户交互导致了这种情况发生后,请深入研究该代码并开始查找发出无效请求的内容。
您可以使用“脚本”选项卡在 JavaScript 中设置断点并单步执行它们。调查通过 $(elemment).bind/click/focus/etc 或旧式事件属性(如 onclick=""/onfocus="" 等)完成的事件处理程序。
如果页面加载后立即发生请求
这将有点难以确定。您将需要转到“脚本”选项卡并开始向加载时运行的每个脚本添加断点。您可以通过单击 JavaScript 行的左侧来完成此操作。
重新加载页面,断点应该会阻止浏览器加载页面。按脚本面板上的“继续”按钮。转到您的网络面板,查看您的请求是否已提出,继续直到找到为止。您可以使用它来通过慢慢添加越来越多的断点然后单步进入和退出函数来缩小发出请求的范围。
您在代码中寻找什么
类似于以下内容:
var url = workingUrl + someObject['someProperty'];
var url = workingUrl + someObject.someProperty;
请记住 someObject 可能是一个对象{}
, 数组[]
,或任何内部浏览器类型。要点是,将访问不存在的属性。
我没有看到任何 404/红色请求
那么无论是什么原因导致它都不会被您的测试触发。尝试使用更多的东西。关键是你应该能够以某种方式使请求发生。你只是还不知道。它必须显示在网络面板中。唯一不会发生的情况是当你没有做任何触发它的事情时。
结论
没有超级简单的方法可以确定到底发生了什么。然而,使用我概述的方法,您至少应该能够接近。这可能是您根本没有考虑到的事情。