5

次のような ajax 呼び出しが与えられた場合:

$.ajax(
{
    url:"MyWebService.blah",
    data: {"data":"awesome"},
    success : function(responseText)
    {
       var myJsonObj = $.parseJSON(responseText);
       //do stuff with myJsonObj
    }
});

これはうまくいきました。今日、jQuery を 1.9 に更新しました (私はしばらくの間 1.6 を使用していました) 突然、さまざまなトグル機能をサポートしていない (eventLayer.X に関する何かがサポートされなくなりました) Safari の可能な修正として、すべての ajax 呼び出しがスローされています。次の JavaScript エラー:

Uncaught Syntax Error: Unexpected token o

少し調べてテストした結果、上記のコードの「responseText」が文字列ではなく JSON オブジェクトになっていることがわかりました。したがって、エラーは理にかなっていますが、私はこれに頭を悩ませようとしています。jQuery は本当にデフォルトの戻り値の型を変更したのでしょうか? ドキュメントを確認しました:

http://api.jquery.com/jQuery.ajax/

dataType はデフォルトで "Intelligent Guess" に設定されています。それがいかに便利かはわかりますが、私もそれが好きではありません。

だからここに私の質問があります:

  1. これは jQuery の新しい (っぽい) 変更ですか?
  2. これを行ったのはバージョン 1.9 でしたか、それとも以前はこのようで、私は 1.6 を使用していた化石ですか?
  3. これを処理するためのいくつかの提案と、私のコードを「将来的に保証する」ものは何ですか?

これは、多くのコードに影響を与える非常に基本的な変更です。コードを調べて、返されたデータを JSON に解析するインスタンスをすべて削除しますが、この全体は少し不安です。dataType を指定しなかったのは間違いでしたか? デフォルトに依存するのではなく、dataType を適用することをお勧めします。これについては私だけですか、それとも jQuery 側での変更は少しおこがましいものでしたか?

4

1 に答える 1

6

jQuery は、dataType が設定されていない場合に返されたものに基づいて、dataType が何であるかを自動的に検出します。ほとんどの場合、1.9 ではその検出が改善され、json として返されるものを適切に検出できるようになりました。常に一貫した結果が得られるように、常にデータ型を指定することをお勧めします。

于 2013-04-12T18:01:24.067 に答える