2011-01-26 60 views
1

我遇到了jQuery和IE的一個非常奇怪的問題。我在IE8中使用jQuery 1.4.4。我嘗試使用AJAX調用: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); 
     } 
    }); 

儘管請求成功,但錯誤處理程序因分析錯誤而被調用。有沒有錯,返回的JSON(它完美的作品在Firefox),問題是線6229 jQuery中:

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

從而未能與「對象不支持此屬性或方法」,並導致解析錯誤。

現在我使用完整的處理程序與if語句作爲解決方法,但這不是一個非常好的主意。任何想法如何解決這個問題?

+0

我們可以看到JSON嗎?我敢打賭,在某個地方有一個尾隨的逗號,它在IE中打破,但在其他瀏覽器中起作用。 – lonesomeday 2011-01-26 11:34:47

回答

1

您是否嘗試過留下dataType取消設置,然後使用jQuery的.parseJSON()(http://api.jquery.com/jQuery.parseJSON/)?這樣你就可以看到響應中是否有錯誤。