繁体   English   中英

通过jQuery Ajax加载的Javascript在Firebug中不会引发预期的异常

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM