jquery ajax json奇妙な問題
jsコード
$.ajax({
type: "post",
url: "/test1.php",
dataType: "json",
タイムアウト: 16000,
データ:{cid:n},
成功: function(msg){
if(1 == msg.status){
アラート('ok'); 🎜> }else if(0 == msg.status){
alert('sorry')
}
},
error: function (jqXHR, textStatus, errorThrown) {
アラート(textStatus "," errorThrown); html; //この文は utf8 形式で出力されます。この文の有無にかかわらず、ajax エラー ブランチは同じように実行されます。
$ menu=array("status"=>1);
exit(json_encode($menu));
js: "json" の dataType を削除し、成功ブランチを通常どおり実行します。 jquery1.3.2 を使用して成功ブランチも通常どおり実行します。ただし、1.6 が使用されている限り、dataType: "json" を指定すると、エラー ブランチがすぐに実行され、「parsererror、テキストから json への変換がありません」という json 解析の問題が報告されます。
PHP の json_encode() 関数でも配列を json 形式に変換する際に問題があるのでしょうか?
------解決策----------------------
dataType: "json" したがって、ajax エラー ブランチに入る前提は、返されたデータが json 形式ではないということです
parsererror、テキストから json への変換がない (json 変換失敗) こともこの点を証明しています
なぜ変換失敗?おそらく、php プログラムは utf-8 BOM ヘッダー
を持つ形式で保存されています。これは、
2.php で確認できます。出力結果の先頭の efbbbf は BOM ヘッダー
です。