没有调用jQuery回调

时间:2012-04-27 21:36:26

标签: javascript jquery json

这是我的脚本的一部分,它打印9然后98但无法打印2它表示没有调用jQuery中的回调函数。但是在此之前我使用json_decode函数打印从php文件返回的json,并且json打印得非常好。我怎样才能调试它,我的意思是哪里可能是错误?

$(document).ready( function() {
alert(9);
$('#charac').keyup( function() {
alert(98);
  $.getJSON('myprg.php?q='+escape($('#charac').val()), function(data) {
    alert(2);

2 个答案:

答案 0 :(得分:5)

使用$.ajax函数代替getJSON并使用错误回调查看正在发生的事情。

$.ajax({
  url: url,
  dataType: 'json',
  data: data,
  success: callback
  error: callback(jqXHR, textStatus, errorThrown)
});

使用Firebug或Chrome开发人员工具检查实际服务器响应并使用JSONLint验证JSON也很有用,某些JSON库比其他JSON库更宽容并忽略小错误。

答案 1 :(得分:1)

这可能不是一个答案,但代码在这里可以更好地显示。

以下是否也失败(使用jQuery 1.5或更高版本)?

$(document).ready( function() {
    alert(9);
    $('#charac').keyup( function() {
        alert(98);
        var jqxhr = $.getJSON('myprg.php?q='+escape($('#charac').val()), function(data) {
            alert(2);
        })
        .success(function() { alert("second success"); })
        .error(function() { alert("error"); })
        .complete(function() { alert("complete"); });
    });
});

或者这个:

$(document).ready( function() {
    alert(9);
    $('#charac').keyup( function() {
        alert(98);
        var jqxhr = $.getJSON('myprg.php?q='+escape($('#charac').val()), function(data) {
            alert(2);
        });

        jqxhr.success(function() { alert("second success"); });
        jqxhr.error(function() { alert("error"); });
        jqxhr.complete(function() { alert("complete"); });
    });
});