用Firebug调试Ajax代码
我在调试Ajax调用中返回的代码时遇到了一些问题 - 具体地说,是一个在json中返回的函数(错误不会被困在Firefox中) - 直到我开始在Internet Explorer中调试这些问题时(我认为它是一个Firefox相关的问题,因为Venkman也没有检测到这些错误)你知道任何方式来调试从Ajax调用返回在json中的代码吗?
编辑03/04/2009 15:05
感谢大家的回应,但我想我没有足够好地解释自己。 我知道足够多的Firebug进行基本的调试,但是当我在Ajax调用中获取一些代码时,我的问题就会发生。 假设我们有以下HTML文件(您需要在同一文件夹中使原型正确工作):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<script type="text/javascript" src="prototype.js"></script>
</head>
<body>
<script>
function ajaxErrorTest()
{
new Ajax.Request('data.json', {
'method': 'get',
'onSuccess': function(data){
if(data.responseJSON.func)
data.responseJSON.func();}});
}
</script>
<input type="button" value="test" onclick="ajaxErrorTest();" />
</body>
</html>
然后,data.json文件的内容是这样的:
{'func':function(){console.log('loaded...');alert('hey');}}
如果您在浏览器中加载页面并单击“测试”按钮(并且一切顺利),您将在控制台中获得一些信息,并显示一个警告框,提示“嗨”。 现在将data.json文件更改为:
{'func':function(){console.log('loaded...');alerts('hey');}}
...再次点击'测试'按钮(无需重新加载页面;-)你得到的控制台线,但没有警报框......并没有错误! 这是我试图调试的那种错误。
尝试单击“控制台”面板(它是一个选项卡)并启用它。 你会发现任何HTTP请求都会被它们包含的任何信息所捕获。 我使用它来查看存储在请求中的任何JSON以及任何错误(500/404 / etc)。
另请注意,您必须在每个域上启用控制台面板。 通常有三个子标题:标题,帖子和响应。 当我调试我的AJAX时,我通常会使用post / response选项卡。
您可能想要使用Net选项卡并仅过滤XMLHttpRequests(XHR)的请求。
其他提示:
编辑:
代码在另一个环境中执行
我想出的唯一方法是用一个(丑陋的)try / catch来包围你的代码。 我想这是因为代码在另一个JavaScript上下文中执行
<script>
function ajaxErrorTest()
{
new Ajax.Request('data.json', {
'method': 'get',
'onSuccess': function(data){
try{
if(data.responseJSON.func)
data.responseJSON.func();}});
} catch (err) {
console.dir(err);
}
}
</script>
此代码提供了详细的错误消息:
ReferenceError: alerts is not defined
我真的怀疑改变执行上下文会解决问题。 我不知道如何与原型,但与jQuery,它可以轻松完成:
$.ajax({
url: "test.html",
context: document.body,
success: function(){
$(this).addClass("done");
}
});
我不确定这个问题涉及到检索到的实际JSON。 你可以直接在你的onSuccess
处理器中抛出一个错误,看看它是否出现在Firebug控制台中? 像这样的东西:
onSuccess: function() { alerts('hey'); }
如果是这种情况,那么这个问题应该在Firebug 1.7中解决。
链接地址: http://www.djcxy.com/p/51875.html