1

jQuery 1.4.3 に固執しているサイトの Ajax コードを書いています。私の Ajax 呼び出しが TCP 拒否を受け取ることがあります (これは問題なく、プロジェクトの一部です)。残念ながら、この jQuery バージョンcompleteでは呼び出されることはありません。jQuery 2 では動作しstatuserror. jQuery のバージョンを更新できません。

TCP リジェクトがキャッチされるために Ajax が失敗するコードを修正できますか?

これは、問題を再現するコードの簡略化された部分です。localhost:9999拒否されたと仮定します。

$(document).ready(function() {
    $.ajax({
        url: 'http://localhost:9999',
        crossDomain: true,
        dataType: 'script',
        complete: function(XMLHTTPRequest, status) {
            console.log(status);
        },
    });
});

テストできるhttp://jsfiddle.net/c2Yt6/をセットアップしました。jQuery 1.6.4 でも動作しませんが、jQuery 2.0.2 は問題ありません。

TCP 拒否エラーをキャッチする方法は?

4

1 に答える 1

0

コードを見ると: http://code.jquery.com/jquery-1.4.3.js

script.onload = script.onreadystatechange = function() {

この部分はコードで実行する必要があります (unminified を追加し、そこにブレークポイントを配置します)。

問題は、イベント リスナー関数が実行されないことです。そのコードをコピーして行を追加すると:

script.onerror=function(e){
  console.log("some error",e);
};

次に、エラーが検出され、ログに記録されます。

jQuery 1.4.3 のバグのようです。スクリプトをロードするだけの場合は、jQuery を使用せずに次のようなコードを使用することをお勧めします。

function loadScript(params){
  var s = document.createElement("script");
  s.src = params.url;
  s.onload = function(){
    s.parentElement.removeChild(s);
    params.success();
  };
  s.onerror = function(){
    s.parentElement.removeChild(s);
    params.error();
  };
  document.body.appendChild(s);
};
于 2013-11-04T05:36:11.083 に答える