xmlhttprequest无法使用所有浏览器

时间:2011-01-17 06:23:31

标签: jquery internet-explorer firefox google-chrome xmlhttprequest

我想在我的网页中提取Feed。 Feed链接为:News。我试过这段代码:

<!--
To change this template, choose Tools | Templates
and open the template in the editor.
-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <title>Gmail</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <script type="text/javascript" src="jquery-1.4.4.js"></script>
        <script type="text/javascript">
            var xmlhttp;
            function fetchFeed(){
                if(window.XMLHttpRequest){
                    $.ajax({
                        type: "GET",
                        url: "http://timesofindia.feedsportal.com/c/33039/f/533916/index.rss",
                        success: function(xml) {
                            var i=0;
                            alert($(xml).find('item').length);
                            $(xml).find('item').each(function(){
                                alert($(this).find('title').text());
                                i++;
                            });
                        },
                        error: function(XMLHttpRequest, textStatus, errorThrown) {
                            alert("XMLHttpRequest: " + XMLHttpRequest + "\nTextStatus : " + textStatus + "\nError Thrown: " + errorThrown);
                        }
                    });
                }
            }

        </script>
    </head>
    <body>
        <div id="gmailForm"></div>
        <input type="button" value="submit" onclick="fetchFeed()"/>


    </body>
</html>

嗯,这在IE&amp;输出为: ie

但是,不在Chrome中工作: chrome

&安培;也不在FireFox中: firefox

我的错误在哪里?

2 个答案:

答案 0 :(得分:4)

这:url: "http://timesofindia.feedsportal.com/c/33039/f/533916/index.rss"

我猜你不是印度时代

你正碰到same origin policy。基本上,您只能对页面来自同一服务器执行XMLHttpRequest。除非您将安全策略设置得非常非常低,否则它甚至不应该在IE中工作。

您需要通过mod_rewrite / mod_proxy在服务器上代理请求或使用cgi脚本。

这是关于YAHOO的好文章!开发者网络描述问题并提供一个简单的PHP脚本来进行代理:JavaScript: Use a Web Proxy for Cross-Domain XMLHttpRequest Calls

答案 1 :(得分:1)

如果您正在使用jquery,则不必关心XMLHttpRequest,jquery会照顾它只需使用

                $.ajax({
                    type: "GET",
                    url: "http://timesofindia.feedsportal.com/c/33039/f/533916/index.rss",
                    success: function(xml) {
                        var i=0;
                        alert($(xml).find('item').length);
                        $(xml).find('item').each(function(){
                            alert($(this).find('title').text());
                            i++;
                        });
                    },
                    error: function(XMLHttpRequest, textStatus, errorThrown) {
                        alert("XMLHttpRequest: " + XMLHttpRequest + "\nTextStatus : " + textStatus + "\nError Thrown: " + errorThrown);
                    }
                });