1

我有一个生成 RSS XML 的 ASPX 页面,如下所示:

<?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 文件中调用这个提要:

$.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 运行该站点,所以我不应该有任何跨域脚本。

4

1 回答 1

0

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

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 方法。

于 2013-10-21T16:41:53.940 回答