[英]Javascript loaded through jQuery Ajax does not throw expected exceptions in Firebug
我有一个Javascript函数,如果出现问题,它将引发异常。 我已经习惯了这种行为,以至于有一天我花了20多分钟的时间才发现代码中的错误,因为该函数未引发异常,只是默默地失败了。
在带有Firebug插件的Firefox中尝试以下代码。 创建具有功能的html页面:
function myfunc(key)
{
alert('I started');
if(!key)
throw 'myfunc: Invalid arguments';
}
然后使用代码创建第二个html页面:
<script type="text/javascript">
myfunc(null);
alert('Exception was before me!');
</script>
并使用jQuery $ .ajax函数从第一页加载第二个html页。
该代码将正确执行,但是您将不会在Firebug控制台中看到任何异常记录。
如果您在第一个html页面上运行相同的函数myfunc(null),您将立即在Firebug中看到一条红线,上面写着:
uncaught exception: myfunc: Invalid arguments
但是,如果它由jQuery执行,则没有任何注销(我想,jQuery使用$ .ajax之后的eval运行脚本)。
这是否意味着jQuery本身会在评估Javascript时捕获异常并忽略它们? 有什么办法可以告诉jQuery让我的异常通过?
如果我正确理解了这一点,我认为您实际上想返回成功(无论是否成功),然后返回状态代码或错误消息。 这是因为如果服务器出现问题,ajax不会返回。 状态代码使浏览器知道发生了什么,而不是在服务器上抛出错误。
之所以这样,是因为否则服务器将认为它是错误的而不是请求的错误,并在此引发错误。
如果您想在FireBug中看到异常,则需要使用console.log('Exception message');
而不是使用alert('Exception message');
看来,这是jQuery 1.4的错误或缺失功能。 我们已升级到1.6,现在即使通过jQuery $ .ajax调用加载并评估了Javascript代码,异常也正在通过。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.