xmlhttprequest не работает со всеми браузерами - PullRequest
0 голосов
/ 17 января 2011

Я хочу получать каналы на моей веб-странице.Ссылка на ленту новостей: Новости .Я пробовал этот код:

<!--
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 и дает вывод как: ie

Но, не работает в Chrome: chrome

а также не в FireFox: firefox

Где моя ошибка?

Ответы [ 2 ]

4 голосов
/ 17 января 2011

Это: url: "http://timesofindia.feedsportal.com/c/33039/f/533916/index.rss"

Полагаю, вы не 1004 * Times of India .

Вы сталкиваетесь с той же политикой происхождения . По сути, вы можете выполнять XMLHttpRequest только на том же сервере, с которого поступает страница. Он не должен работать даже в IE, если вы не установите политику безопасности очень, очень низко.

Вам необходимо прокси-запрос на вашем сервере либо через mod_rewrite / mod_proxy, либо с помощью сценария cgi.

Вот хорошая статья о YAHOO! Сеть разработчиков описывает проблему и предоставляет простой PHP-скрипт для прокси: JavaScript: использование веб-прокси для междоменных вызовов XMLHttpRequest

1 голос
/ 17 января 2011

Если вы используете 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);
                    }
                });
...