【问题标题】:Debugging javascript after pulling the method in via AJAX通过AJAX拉入方法后调试javascript
【发布时间】:2011-10-05 08:23:01
【问题描述】:

我正在使用 MVC 和 jquery 从服务器中提取一个函数(作为我动态生成并附加到 html 正文的部分视图)并执行它。这工作正常,我可以在提琴手中查看它,但调试很糟糕。我使用以下方法引入该方法:

    $("#makeGrid").click(function (e) {
        $.get('/gridder/basicgrid', callbackFn);
        function callbackFn(data) {
            //Append markup to dom
            $('body').append(data);
            // call the js function from the partialview here 
            generateGrid();
        }
    });

这是否是最佳实践我不确定,但如果我在 ajax 命令之后“查看源代码”,代码不可见,并且使用调试器;命令似乎不起作用。例如:

    function generateGrid() {
        alert("start");
        debugger;
        alert("end");
    }

创建两个警报,但即使 firebug 处于活动状态,也不会启动调试器。这个discussion 提出了类似的问题。有些人通过使用调试器两次(这个错误现在已经消失)或在新窗口中打开萤火虫(不走运)来解决它。甚至 eval('debugger;');有人在另一个线程中建议但不好!

有什么建议吗? (包括如果需要使用除firebug以外的工具,但我想调试,而不是查看fiddler风格)

【问题讨论】:

  • view source 永远不会显示通过 ajax 加载的内容。您需要使用 Firebug 之类的工具或内置 DOM 检查器的浏览器来检查 DOM
  • 不能在 Firebug 中设置断点而是使用debugger 语句吗?
  • 谢谢大家 - re: DOM 检查,我还没有找到包含代码的元素。它确实执行了(我的警报出现了),但是所有抛出异常或调用调试器的尝试都不会产生任何结果。还有保罗,我看不到代码,所以很遗憾无法添加断点。
  • 您是否在 Chrome 中尝试过(打开开发者工具和调试器语句)?
  • 嗨,马丁,是的,我确实尝试了 chrome,结果相同。不知道为什么。也许是因为我引入了一个带有

标签: javascript model-view-controller debugging firebug


【解决方案1】:

看起来这个问题还没有确定的答案。供其他人参考,我最终在 VS2010 本身中进行了调试,如下所示:

a) 必须使用 IE 作为 VS 默认浏览器。火狐不喜欢玩。如果您使用的是 MVC,则默认浏览器选择器不会像在 web 表单中那样针对视图等。一个快速的解决方案是在根目录中创建一个空的 .html 页面,然后右键单击该混蛋以获取“使用...浏览”并选择所需的默认浏览器。多田。

b) 接下来,在 IE 的高级选项中,确保您取消勾选“禁用 javascript 调试”选项。

c) 现在,您可以使用调试器了;视图中脚本中的命令来中断动态生成的脚本的执行。它将返回到 VS 并突出显示该行。因为它是生成的,所以它在顶部显示 [动态脚本]。断点似乎仍然没有令人讨厌的工作。

d) 在 IE 中,js 错误也会在控制台中报告。它将为您提供行号和列,突出显示您的文件。但是,如果您发送了动态局部视图,它会在您的原始页面文件中突出显示这些坐标,这是不适用的。而是转到VS的“脚本块[动态]”选项卡中的等效坐标。

事实上,这对于 MVC 开发可能比 Firebug 提供的更有用。

干杯

【讨论】:

    猜你喜欢
    • 2020-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    相关资源
    最近更新 更多