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)
});

また、Firebug または Chrome 開発者ツールを使用して実際のサーバーの応答を検査し、JSONLintを使用して JSON を検証することも役立ちます。JSON ライブラリの中には、他のライブラリよりも寛容で小さなエラーを無視するものがあります。

于 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 に答える