在jQuery .getJSON命令上跳过了回调函数

时间:2010-09-08 16:04:43

标签: javascript jquery callback

我有以下代码片段:

$('input#teamName').live('blur', function() {
  var value = $(this).val();
  if (value) {
    $.getJSON('api/event_company/'+value, function(data) {
      console.log('why does this not want to work?');
    });
  }
});

基本上它所做的就是在表单字段更改时从服务器请求一些数据。我的问题是,回调函数中的任何内容都不会被调用,即使我可以看到使用firebug已成功向服务器发送请求并收到有效的JSON响应。

如果我将getJSON参数更改为:

$.getJSON('api/event_company/'+value, alert('Blah'));

然后按预期弹出警报。可能导致这种行为的任何想法?

1 个答案:

答案 0 :(得分:4)

如果JSON无效,则解析将失败,并且不会调用处理程序。来自getJSON docs:

  

重要:从jQuery 1.4开始,如果JSON文件包含语法错误,请求通常会以静默方式失败。出于这个原因,避免频繁手动编辑JSON数据。 JSON是一种数据交换格式,其语法规则比JavaScript的对象文字符号更严格。例如,JSON中表示的所有字符串,无论它们是属性还是值,都必须用双引号括起来。有关JSON格式的详细信息,请参阅http://json.org/

查看您的JSON validates

你的第二个例子不正确。它应该是,

$.getJSON('api/event_company/'+value, function() {
    alert('Blah');
});