1

这是我的脚本的一部分,它打印 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);
4

2 回答 2

5

使用$.ajax函数而不是getJSON使用错误回调来查看发生了什么。

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

It can also be useful to inspect the actual server response with Firebug or Chrome developer tools and validate the JSON with JSONLint, some JSON libraries are more forgiving than others and ignore small errors.

于 2012-04-27T21:53:51.427 回答
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"); });
    });
});
于 2012-04-27T21:49:38.987 回答