2010-12-29 11 views
6

jQuery 1.4.2を使用していて、簡単なAJAXリクエストを実行しようとしています。ターゲットURLはJSON文字列を返します(私はjslintでそれを検証しました)。リクエストはFirefoxとChromeで動作しますが、IE8で動作したくないので、理由を特定できません。ここにコールがあります:jQuery AJAXはIE8で「エラー:このメソッドはオープンメソッドが呼び出されるまで呼び出すことができません。

jQuery.ajax({ 
url: 'http://' + domain + '/' + 'helper/echo/', 
dataType: 'json', 
success: function(data) { 
alert(data); 
}, 
beforeSend: function(request, settings) { 
alert('Beginning ' + settings.dataType + ' request: ' + settings.url); 
}, 
complete: function(request, status) { 
alert('Request complete: ' + status); 
}, 
error: function(request, status, error) { 
alert(error); 
} 
}); 

IEはbeforeSendコールバックとエラーコールバックを実行します。メッセージとエラー・コールバック・アラート:Content-Type: text/javascript; charset=UTF-8

Error: This method cannot be called until the open method has been called. 

マイレスポンスヘッダ戻ります。

IEでは何が起こっていますか?私はローカルホスト上でサーバを稼働させており、http://localhost:8080/psxからhttp://localhost:8080/helperにリクエストしています。 IEがこのリクエストをブロックしている可能性がありますか?リクエストトラフィックを分析するためにFiddlerをインストールしようとしましたが、ロックされているためマシン上で実行されません。火かぶりは私に許してくれますが、すべてが良いようです。

助けてくれてありがとう!

+0

は '非同期設定してみてください:false'をして、もう一度試してみてください。 –

+0

それは残念なことに、効果がありませんでした。私はまた、エラーのコールバックステータスがnullであることに言及する必要があります。 – checker

答えて

14

申し訳ありませんが、ここに修正があります!リクエストはwindow.XMLHttpRequest()を使用していましたが、何らかの理由でIE8で正常に動作しません。 jQueryは、window.ActiveXObject("Microsoft.XMLHTTP")に戻って失敗することはありません。

あなたのAJAX呼び出しの前にどこかで、あなたのスクリプトにこれを追加します(唯一のIE8ではなく、他のIEの中で検証):

  1. のjQuery 1.4への更新:

    jQuery.ajaxSetup({ 
          xhr: function() { 
            //return new window.XMLHttpRequest(); 
            try{ 
             if(window.ActiveXObject) 
              return new window.ActiveXObject("Microsoft.XMLHTTP"); 
            } catch(e) { } 
    
            return new window.XMLHttpRequest(); 
           } 
         }); 
    

    ここで私は解決策に来てみましょう.4問題が修正されたバグの場合は.4

  2. 結果が大幅に異なるように見えるまで、FirebugデバッガとDevToolsデバッガを経由しました。
  3. 5899で、ajax()関数はxhr()関数でXmlHttpRequestオブジェクトを作成します。 Firefoxでは、良いデータを返していました。 IEでは、これは私がGoogleで検索ライン5749上でこの機能、return new window.XMLHttpRequest();
  4. を分析し、同じ問題を抱えている。このpage渡って来て、私の作品解決策を提案し、すべてのフィールドが
  5. Error: This method cannot be called until the open method has been called.であると返していました。
  6. Official jQuery ticket
関連する問題