2011-01-26 15 views
1

jQueryとIEで非常に奇妙な問題が発生しています。 IE8でjQuery 1.4.4を使用しています。jQuery AJAX成功ハンドラが期待どおりに機能しない

$.ajax({ 
     url: '/events/do_something', 
     dataType: 'json', 
     data : params, 
     beforeSend : function() { 
      setPageStateLoading(true); 
     }, 
     success : function(data){ 
      doSomethingElse(data, false); 
     }, 
     error : function(XMLHttpRequest) { 
      openErrorDialog(XMLHttpRequest.responseText); 
     }, 
     complete : function(XMLHttpRequest, textStatus) { 
      setPageStateLoading(false); 
     } 
    }); 

リクエストが成功したにもかかわらず、エラーハンドラが解析エラーのために呼び出されます。

で失敗
var ct = xhr.getResponseHeader("content-type") || "", 

「オブジェクトはこのプロパティまたはメソッドをサポートしていません」とパースエラーが発生します(これは、Firefox上で完璧に動作)、問題はjQueryのでライン6229で返されるJSONは何も問題はありません。

現時点では、回避策としてif文を使用して完全ハンドラを使用していますが、これは本当に良い考えではありません。どのようにこれを正しく修正するためのアイデアですか?

+0

JSONが表示されますか?私の賭けはどこかに後ろにカンマがあることです。これはIEで壊れますが、他のブラウザでも動作します。 – lonesomeday

+0

HTTPレスポンスヘッダーを取得して、コンテンツタイプヘッダーに関するものかどうかを確認してください。あなたは、ライブhttpヘッダーや火かき棒でfirefoxからそれをつかむことができます。 – regilero

答えて

1

データ型の設定を解除してから、jQueryの.parseJSON()(http://api.jquery.com/jQuery.parseJSON/)を使用してみましたか?この方法で、応答にエラーがあるかどうかを確認できます。

関連する問題