バックグラウンド:
- 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")) ?>
私の目的:
- すべてのajaxリクエストに同じ成功イベントを発生させたい
- リクエストによって返されたjsonデータを成功イベントで使用したいのですが、可能であれば、生のjqXHRresponseTextをjsonに再度変換せずに使用します
問題は奇妙です、何かアイデアはありますか?
私はこれらすべての質問を読みました:
- Ajax成功イベントが機能しない
- AjaxSetupは成功関数を実行しません
- jQueryajaxSetupメソッドは$.getまたは$.postでは機能しませんか?
- $ .ajax関数の成功:起動しない
そして、私はそれらのどれも私の問題ではないと確信しています。