如何调试此单击处理程序永远不会触发的原因?

时间:2010-04-08 19:28:22

标签: jquery json debugging firebug handler

我将在这里详细说明。我在Max OSX上使用Firefox 3.6.3和Firebug 1.5.3。

我有一个项目的两个版本,一个有效,另一个有bug。我下载了一个,手工输入了一个。猜猜哪一个不起作用。它们应该是相同的,除了我使用更新版本的jQuery并且文件命名不同。 jQuery版本不是问题。我让我使用旧的jquery,我让工作的人使用更新的jquery。无论哪种方式,我的仍然破产,下载的仍然有效。我试图看看这些项目是如何不同的。我唯一不想做的就是将工作代码复制到已破坏的代码中,因为当我自己的唯一代码导致类似问题时,我需要能够解决这些问题。

我的代码中没有可以在Firebug中看到的错误,实际上,2/3的工作正常。只是第二个按钮什么也没做。所以我想要介入。这些总是眼球错误,我真的很难看到它们。

我把它放在公共服务器上。 http://colleenweb.com/jqtests/ex71.html我想调试ex71.js

如果您在ex71.js中的第13行触发工作并设置断点,则当您单击第二个按钮时,变量json具有预期值。但如果你发现这个,它永远不会到达那里。我已经超过了HTML,所有的名字似乎都匹配。我也想知道为什么这些按钮不合适,但这是一个css的事情。请告诉我我缺少什么,更重要的是,我可以使用什么工具/技术来找到这些类型的错误。

2 个答案:

答案 0 :(得分:3)

来自api.jquery:

For example, all strings represented in JSON, whether they are properties or values, must be enclosed in double-quotes. For details on the JSON format, see http://json.org/.

您确定传入的数据在语法上是否准确?

答案 1 :(得分:1)

我认为您正在使用的功能是期待JSONP。这就是回调=?无论如何表示。你试过把它关掉吗?

$.getJSON('ex71.json', function(json) {
    $('input#tmpTitle').val(json.title);
    $('input#tmpCompany').val(json.company);
}); 

文档中的这个页面在一个注释中解释了回调=?可用于跨域调用所需的JSONP。如果您没有进行跨域调用,那么您不需要它。如果您正在进行跨域调用,那么您需要返回JSONP而不是常规JSON(这实际上比听起来容易得多)。

http://api.jquery.com/jQuery.getJSON/