9

jQuery ajax の単純なコールバック関数に問題があります。Google もスタック オーバーフローも役に立たないので、これは具体的なことではなく、私が無知すぎてわからないことだと思います。私には、コードは本来あるべきように見えます。

コードは次のとおりです。

function sendMessage(message)
{
//Establish connection to php script
$.ajax({
    type: 'POST',
    url: 'action/chat/test.php',
    success: function(feedback){

        alert(feedback);

    }
}).error(function(){
    //Do some error handling here
});
}

test.php では、単に

<?php
    echo "called";
?>

私に関する限り、「呼び出された」ことを警告する必要がありますが、そうではありません。関数 sendMessage() が呼び出されていることを確認済みです (パラメータ メッセージは今のところ問題ありません)。

誰にもアイデアはありますか?

4

3 に答える 3

13

更新:注意すべき点の1つは、firebugのようなある種のデバッガーを使用していることを確認してください。次に、[ネットワーク]タブに移動し、リクエストのURLとレスポンスを手動で確認して、200レスポンスまたは内部サーバーエラーなどが発生するかどうかを確認します。

成功関数にを追加してconsole.log(data);、何かが返されるかどうかを確認してください。

また、使用することができます.always(data)

function sendMessage(message)
{
  //Establish connection to php script
  $.ajax({
      type: 'POST',
      url: 'action/chat/test.php'   
  }).done(function(data) { console.log(data); })
    .fail(function() { alert("error"); })
    .always(function() { alert("complete"); });
}

ドキュメントから:

非推奨の通知: jqXHR.success()、jqXHR.error()、およびjqXHR.complete()コールバックは、jQuery1.8で非推奨になります。最終的な削除に備えてコードを準備するには、代わりにjqXHR.done()、jqXHR.fail()、およびjqXHR.always()を使用します。

于 2012-05-02T22:01:21.830 に答える
4

参考までに、このような結果になる可能性のある動作があります (つまり、done() が呼び出されない)。

ここにあります:

  1. JSON オブジェクトを期待しているとします ("Accept" MIME タイプでそれを要求しました)。
  2. Json 文字列が無効であるとします。

この場合、done() は呼び出されませんが、always() は呼び出されます。そして always() では、「ひどく」フォーマットされた回答を純粋なテキストとして取得します。

于 2014-07-29T09:50:10.567 に答える
1

おそらくエラー処理です。エラーを処理したい場合は、ajax に渡すオブジェクトに指定できる別の属性があります。それは「エラー」であり、ページのタイムアウトを処理するための「タイムアウト」です。$.ajax 関数を調べると、これらの属性が見つかります。

于 2012-05-02T21:55:51.707 に答える