jQuery Ajax使用RSS XML在IE9中返回错误

时间:2013-07-11 16:02:17

标签: jquery xml ajax

我有一个ASPX页面,可以像这样生成RSS XML:

<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
    <title>Title</title>
    <link>http://www.example.com/news</link>
    <description>An RSS feed for the latest news articles.</description>
    <language>en-us</language>
    <ttl>60</ttl>
    <image />
    <lastBuildDate>Thu, 11 Jul 2013 16:44:10 GMT</lastBuildDate>
    <item>
        <title>The Future of News</title>
        <image>/uploadedImages/news/Articles/blog.jpg?n=104</image>
        <link>http://localhost/news/Articles/5363/</link>
        <pubDate>2029-01-11</pubDate>
        <formattedDate>today ago</formattedDate>
        <summary>Where will news be in 30 years? Check out what sort of news WE think we'll be making!</summary>
        <description />
    </item>
...
</channel>
</rss>

我需要从这样的jQuery文件中调用这个feed:

$.ajax({
   dataType: ($.browser.msie) ? "text" : "xml",
   url: newsfeed,
   cache: true,
   error: function (xhr, ajaxOptions, thrownError) {
    alert(xhr.status);
    alert(thrownError);
   }
   success: function (data) {
   ...

该代码适用于Firefox和Chrome,但在IE9中失败。在IE9中,它会触发错误情况并显示两个警告,这两个警报都只是说“错误”。

“newsfeed”变量的值为“http://localhost/source/fixed/newsrss.aspx”,我已使用提醒确认。

在其他地方,我看到IE不喜欢“xml”数据类型,所以必须改为使用“text”。

我正在从localhost运行该站点,因此我不应该有任何跨域脚本。

1 个答案:

答案 0 :(得分:0)

此问题的解决方案涉及检测正在使用的Web浏览器。如果浏览器是IE,那么我使用IE的XMLHttpRequest而不是使用jQuery AJAX。这是我的代码:

var xhReq = new XMLHttpRequest();
xhReq.open("GET", "/Source/Handlers/Search.ashx?q=" + val + "&d=" + dateObj.getTime(), false);
xhReq.send(null);
AjaxSuccess(xhReq.responseText);

AjaxSuccess方法包含在成功执行jQuery AJAX代码时调用的相同javascript。

所以我得到了它的工作,但我不知道为什么IE不喜欢jQuery方法。