2

バックグラウンド:

  • jQuery1.7クライアント側の使用
  • PHPサーバー側
  • json_encodephp関数でのjson応答の使用
  • content-typeヘッダーは正しく、text / plain、text / x-json、application/jsonのいずれかが機能します。
  • 私のphpコードからスローされたエラーはありません
  • Firefox11に取り組んでいます
  • jsコンソールと他のWebの開発者ツールを使用しています
  • HTTP / 1.1 200 OK

このJavascriptコードでは、successイベントは発生しません。

$.ajaxSetup({cache:false,
        success:function(d) {
            console.log("ok from setup with data "+d.toSource())
        },
        complete:function(xhr,ts){
            console.log("Ajax finished reponse:"+xhr.responseText)
        },
        error:function(jqXHR, textStatus, errorThrown){
            console.log("Error")
        }
});
$.getJSON("test2.php",{},function(data){
    //some code here
});

私がこのようにそれをするとき、それは働きます:

$.ajaxSetup({cache:false,                
        complete:function(xhr,ts){
            console.log("Ajax completado con:"+xhr.responseText)
        },
        error:function(jqXHR, textStatus, errorThrown){
            console.log("Error")
        }
});
$.getJSON("test2.php",{},
     function(data){
            //some code here
     }).success(function(d){
            console.log("success applied directly, data "+d.toSource())
        }
);

どちらの場合も、完全なイベントは常に発生し、エラーは発生しません。 ただし、2番目のコードでは成功が発生します。 明らかに.get()方法については同じです。

PHPコード:

<?php header("Content-Type:application/json;charset=utf-8");
    //or whatever text/x-json text/plain, even text/html, jquery do the dirty job
echo json_encode(array("stat"=>"1")) ?>

私の目的:

  1. すべてのajaxリクエストに同じ成功イベントを発生させたい
  2. リクエストによって返されたjsonデータを成功イベントで使用したいのですが、可能であれば、生のjqXHRresponseTextをjsonに再度変換せずに使用します

問題は奇妙です、何かアイデアはありますか?


私はこれらすべての質問を読みました:

そして、私はそれらのどれも私の問題ではないと確信しています。

4

1 に答える 1

5

ajaxSetupのドキュメントをご覧ください:http://api.jquery.com/jQuery.ajaxSetup/

注:グローバルコールバック関数は、それぞれのグローバルAjaxイベントハンドラーメソッド(.ajaxStart()、. ajaxStop()、. ajaxComplete()、. ajaxError()、. ajaxSuccess()、. ajaxSend())で設定する必要があります。 $ .ajaxSetup()のオプションオブジェクト。

それがあなたの問題だと思います。

アップデート

ページ上のすべてのajaxリクエストに対してajaxハンドラーをグローバルにしたい場合は、次のようにします。

$(document).ajaxSuccess(function(d){
    console.log("ok from setup with data "+d.toSource());
});
于 2012-04-03T22:18:57.193 に答える