0

次のコードがあります。

$("#workout-switcher .button").on('click', function(){
   console.log('first test'); // this is logged
   $.get("/ajax/set-workout.php", { 'request' : id, 'date' : date },
      function(data){
         console.log('second test'); // this is not logged
      },'json'
   );
});

これは jQuery 1.8.3 で完全に機能します。つまり、first testがコンソールにログインし、getリクエストが送信されて正常に実行され、次に がsecond testコンソールにログインします。

これは jQuery 1.9.0 で起こることです:first test発火し、get正常に発火しますsecond testが、コンソールにログインしません。

ここで何が問題なのですか?

編集

$.get を $.ajax に変更したところ、動き始めました。明らかに jQuery 1.9.0 のバグです。

4

1 に答える 1

1

アップグレードガイドによる:http://jquery.com/upgrade-guide/1.9/

"jQuery.ajaxが空の文字列のJSON結果を返す1.9より前では、JSONまたはJSONPの戻りデータ型を期待するajax呼び出しは、空の文字列の戻り値を成功例と見なしますが、nullを返します。成功ハンドラーまたはpromise。1.9以降、JSONデータに対して返される空の文字列は不正な形式のJSONと見なされます(そうであるため)。これによりエラーがスローされます。エラーハンドラーを使用してこのようなケースをキャッチしてください。 "

于 2013-02-04T22:51:56.790 に答える