【发布时间】:2011-06-10 15:48:09
【问题描述】:
所以在我的网站中,我使用 jquery 通过 ajax 获取数据。作为 ajax 响应的一部分,一些 javascript 代码也会被执行。问题是如何在 firebug 或其他工具中调试这个 javascript。这是我目前的经验:
- 放入调试器;不工作
- 对于某些 javascript,无法设置断点,因为该脚本尚未加载。
- 即使这个新的 javascript 调用了一些其他已经加载的函数(即我可以在 firebug 中看到它并设置一个断点),该函数上的断点仍然没有被触发
但是,javascript 确实可以正常执行,甚至诸如 console.log 之类的东西也可以工作,但似乎无法调试它..
【问题讨论】:
-
这在我看来是一个糟糕的设计决定:恕我直言,我认为您不应该将代码作为对
XMLHttpRequest的响应发送(并使用eval或函数构造函数来执行该代码)。 -
我还要说这听起来更像是错误的设计决定。你能告诉我们更多为什么你将那个脚本和数据一起加载吗?应该有一个简单的解决方案,它会得到很好的支持,并且易于调试
-
在响应中,我有类似 $(document).ready(function{..}) 的代码,所以我没有在 ajax 调用的成功处理程序中执行代码,而是将 javascript 作为一部分发送完成某些任务的响应..不明白这种方法有什么问题?
-
这是一个巨大的安全风险,在运行时评估代码很慢,并且(如您所见)给调试带来了问题。您最好静态定义该代码并让回调处理程序运行该函数,而不是将其作为响应的一部分发送。
-
因为某些攻击者可能会更改动态发送的代码(例如,通过更改存储的代码并窃取 cookie 并从其他用户的帐户中执行恶意任务)。更改(客户端)服务器上的静态文件要困难得多。
标签: javascript asp.net ajax debugging firebug