2011-01-26 37 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/)?这样你就可以看到响应中是否有错误。