用运行时错误调试jquery ajax脚本

Bas*_*tch 6 linux ajax firefox jquery firebug

如何从jQuery AJAX收到的脚本中看到运行时错误?

我正在编写一个(自由软件)应用程序(在GNU/Linux/Debian/x86-64上的MELT监视器),它嵌入了它的特定Web服务器.有关 详情,请参阅此问题.我正在提交d624e22497de ...

我在Linux/Debian/Gnu/x86-64上使用Firefox 38或42和最近的Firebug.

我正在使用$.ajax带有脚本的jQuery :

$.ajax
({url: "/canvasedit",
  method: "POST",
  data: {"do_fillcanvas": true},
  dataType: "script",
  success: ajaxcanvascript
 });
Run Code Online (Sandbox Code Playgroud)

ajaxcanvascript正确调用(和console.log那里被显示),所以从一个HTTP点,AJAX请求已经成功(200 OK).

但是,当AJAX收到的脚本中存在运行时错误时do_fillcanvas,这是一个类似于以下内容的生成脚本:

     console.log('dofillcanvas canvedit.c:206 siz 1; this=', this,
        ' momc_display_canvas=',momc_display_canvas);
 momc_display_canvas('09:26:39',[
     momc_top_entry(momc_item_ref('notice'),
           momc_node(momc_item_ref('comment'),
                 [
                 momc_string("some simple notice"),
                 momc_node(momc_item_ref('web_state'),
                       [
                           momc_int(2)]),
                 momc_item_val('hashset'), momc_set([
                     momc_item_ref('canvasedit'),
                     momc_item_ref('microedit'), momc_item_ref('the_agenda')])
                 ,
                 momc_tuple([
                     momc_item_ref('web_session'), momc_nil_ref(), 
                     momc_item_ref('the_system')])
                 ]))]);

 console.log('dofillcanvas canvedit.c:239 this=', this);
 addupdatehtml('displayed <tt>Sat Nov  7 09:26:39 2015 MET</tt>');
 console.log('dofillcanvas canvedit.c:252 done 09:26:39.11 this=', this);
Run Code Online (Sandbox Code Playgroud)

我的Firebug控制台中没有任何错误消息(或者很容易从Firefox中看到).

我正在调试的那种运行时错误是例如一些名为deep from的未定义方法momc_display_canvas(使用jcanvas,我不是很熟悉).

那么,如何从jQuery AJAX收到的脚本中轻松查看运行时错误?

console.log到处都在添加,但这不方便......

Abh*_*kar 1

如果我是对的,那么您要求在调用 ajax 至 ajax 完成时处理错误。jquery ajax 有一个错误参数回调函数,您可以使用该回调来处理您的错误。

$.ajax({
...
error: function(error){
console.log(error);
}
...
})
Run Code Online (Sandbox Code Playgroud)

如果你想处理总错误,你可以使用 try catch 块来包裹整个 ajax 调用。希望这对你有帮助})