【问题标题】:How can I debug why this click handler never fires?我如何调试为什么这个点击处理程序永远不会触发?
【发布时间】:2026-01-14 13:30:02
【问题描述】:

我将在这里非常详细地介绍。我在 Max OSX 上使用 Firefox 3.6.3 和 Firebug 1.5.3。

我有一个项目的两个版本,一个可以工作,一个有错误。一个是我下载的,一个是我手写的。猜猜哪个不起作用。它们应该是相同的,除了我的使用更新版本的 jQuery 并且文件命名不同。 jQuery 版本不是问题。我让我使用较旧的 jquery,而我让工作的 jquery 使用较新的 jquery。无论哪种方式,我的仍然坏了,下载的仍然有效。我拼命想看看这些项目有什么不同。我唯一不想做的就是将工作代码复制到被破坏的代码中,因为当我自己的唯一代码导致类似问题时,我需要能够弄清楚这些东西。

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

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

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

【问题讨论】:

  • 我取消了回调=?那是因为我认为新的 jQuery 需要它。但没有快乐。至于引号,工作示例在 json 文件中的值周围有单引号,而键周围根本没有引号。无论如何,我将它们更改为在服务器上加倍,键和值都解决了问题。我需要很长时间才能弄清楚这一点,而且我再也不会在 json 文件中留下双引号了。感谢您的回答,两个很好的假设。
  • @tixrus:我不知道您使用什么(服务器端技术)来创建 JSON 文件(我怀疑您在示例中手动创建了文件),但至少 PHP 的 @987654323 @ 产生有效的 JSON:php.net/json_encode

标签: jquery json debugging firebug handler


【解决方案1】:

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

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

【讨论】:

  • 不:colleenweb.com/jqtests/ex71.json{ company : 'Springfield Electronics', title : 'Chief Widget Maker' }
  • 宾果游戏!哦,我得打字长一点。
  • 从一个 jQ 版本到另一个版本,这是一个奇怪的小变化。很高兴它帮助了你。
【解决方案2】:

我认为您正在使用的函数需要 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/

【讨论】: