0

私はajaxコードの次の部分を持っています:

$(document).ready(function(){
    $("form input#dodaj").click(function(){
        var s = $("form input#zad").val();
        var str = "<li>"+s+"</li>";
        $.ajax( {
            type: "GET",
            url: "http://lesni.org/kss/dodaj_zadanie.php",
            data: { 
                pid: ($(this).attr('alt')),
                zad: encodeURI(s)},
            error: function( err ){ alert(err); }
                }
             ).done(function(){
                $("ul#zadania").append(str);
                $("form input#zad").val(" ");
            });
        });     
    });

注: 上記のコードをロードするページは のような URL からのものhttp://lesni.org/some/pageであるため、Same Origin ポリシーは問題になりません。

しかし、うまくいかないようで、その理由はわかりません。

呼び出している PHP ファイルは正しいです。ブラウザに手動で入力すると:

http://lesni.org/kss/dodaj_zadanie.php?pid=1&zad=abc

正しく動作します (データベースにレコードを追加します)。しかし、ajax コードは機能しません。そして、エラーがスローされないか、エラーがスローされるかどうかわかりません...

問題は、AJAX コードのこの部分を診断して何が問題なのかを知るにはどうすればよいかということです。POSTバージョンも試しましたが、効果はありませんでした。

4

1 に答える 1

1

data次のように指定しています。

data: { 
    pid: ($(this).attr('alt')),
    zad: encodeURI(s)
}

オブジェクトを 経由dataでjQueryに渡す場合、エンコードする必要はありません(またはエンコードしたくありません)。(これは文字列でのみ行います。) jQuery がそれを行います。(エンコードたい場合はencodeURIComponent、ではなく、が必要ですencodeURI)。そのため、二重にエンコードされたエンティティになるため、正しく機能しません。

それは次のようになります。

data: { 
    pid: ($(this).attr('alt')),
    zad: s
}

( の値を囲む括弧も必要ありませんが、pid無害なので残しました。)


しかし、質問に答えると

エラー メッセージをスローしていない AJAX エラーを診断するにはどうすればよいですか?

...あなたはそれを行う

  • 適切なブラウザーの開発ツールの [ネットワーク] タブを見ると、サーバーに送信されたものと返されたものが正確に表示されます。

  • サーバー側のデバッグ (適切なデバッグ、またはログへのダンプ) を使用して、サーバーが受信した内容を正確に確認します。

  • サーバー側のログを調べて、正しいリソースが要求されたことを確認します。

...等々。

于 2013-02-25T23:26:38.807 に答える