2010-04-08 26 views
3

我会在这里详细描述。我在使用Firebug 1.5.3的Max OSX上使用Firefox 3.6.3。我该如何调试这个点击处理程序为什么不会触发?

我有两个版本的项目,一个工作,一个有bug。一个我下载,一个我手工输入。猜测哪一个不起作用。它们应该是相同的,除了我使用更新版本的jQuery并且文件命名不同。 jQuery版本不是问题。我使用了较老的jquery,而且我使用了较新的jquery。无论哪种方式,我仍然打破,下载的仍然有效。我捣毁了我的眼睛,试图看看这些项目是如何不同的。我不想做的唯一事情就是将工作代码复制到破坏的代码中,因为我需要能够把这些东西弄清楚,当它是我自己的唯一代码时会导致类似的问题。

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

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

如果你在工作区中设置了一个中断点,并在ex71.js的第13行设置了一个中断点,那么当你点击第二个按钮时,变量json就会具有期望的值。但是,如果你萤火虫这一个,它永远不会到达那里。我已经在html上了,而且所有的名字似乎都匹配了。我也想知道为什么按钮不正确,但这是一个CSS的事情。请告诉我我错过了什么,更重要的是,我可以使用什么工具/技术来找到这些类型的错误。

+0

我摘下了回调=?那是因为我认为新的jQuery需要它。但没有喜乐。 至于引号,工作示例在json文件的值周围有单引号,关键字周围没有引号。无论如何,我将它们改为在服务器上加倍,包括键和值,并解决了问题。我花了很多年才弄明白这一点,而且我永远不会再把json文件的双引号留下。 感谢您的答案,两个伟大的假设。 – 2010-04-08 20:01:00

+0

@tixrus:我不知道你用什么(服务器端技术)来创建你的JSON文件(我怀疑你手动创建了你的文件),但至少PHP的'json_encode'生成有效的JSON:http: //php.net/json_encode – 2010-04-09 22:10:20

回答

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/.

确定传入的数据是准确的语法?

+0

Nope:http://colleenweb.com/jqtests/ex71.json:'{company:'Springfield Electronics',标题:'Chief Widget Maker'}' – 2010-04-08 19:43:44

+0

BINGO!哦,得再打一点。 – 2010-04-08 20:01:35

+0

这是从一个版本的jQ到另一个版本的奇怪的小变化。很高兴它帮助你。 – dclowd9901 2010-04-08 20:38:25

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/

相关问题