通过Ajax调用调用远程XML

时间:2013-08-29 07:05:58

标签: jquery xml

我在远程服务器上有一个xml。现在我想用ajax调用它。 IE正在提供所需的结果。但Firefox和Chrome不能。请给我解决方案。我谷歌但没有找到解决方案。

$.support.cors = true;
    $.ajax({ 
    type: "GET", 
    url: "http://www.w3schools.com/xml/note.xml", 
    dataType: "xml", 
    success: function(node) 
    { 
    alert(node); 
    }, 
    error: function() 
    { 

    alert("Network Error"); 

    } 
    });

3 个答案:

答案 0 :(得分:3)

是的你肯定会遇到ajax跨域问题。现在有两种方法可以使用。

这是一个在这里分享的一个小问题。我不会在你的代码上实现它。但是如果你检查这些东西,我相信你可以解决这个问题。

编辑一个简单的谷歌搜索结束here。 其中一些人更清楚地解释了解决方案。你可以利用它。

答案 1 :(得分:0)

它真的很难使用ajax跨域,请查看googles。 使用ajax在你的serwer中调用.php并使用curl post。

我的英语很糟糕

创建对ajax.php的调用GET 并在ajax.php中写道。

echo GETrequest("http://www.w3schools.com/");

这是我的2个卷曲功能,只需更改结束行,$ this->要返回的数据

private function GETrequest($link){
        $zapytanie = curl_init(); // adres strony
        curl_setopt($zapytanie, CURLOPT_URL, $link);
        curl_setopt($zapytanie, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.4) Gecko/20091030 Gentoo Firefox/3.5.4"); // useragent
        curl_setopt($zapytanie, CURLOPT_HTTPHEADER, array("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8","Accept-Language: pl,en-us;q=0.7,en;q=0.3", "Connection: keep-alive","Cache-Control: max-age=0","text/html; charset=UTF-8"));
        curl_setopt($zapytanie, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($zapytanie, CURLOPT_COOKIEFILE, dirname(__file__) . '/cookies/'.$this->adres_ip.'/cookies.txt'); // ciacha
        curl_setopt($zapytanie, CURLOPT_COOKIEJAR, dirname(__file__) . '/cookies/'.$this->adres_ip.'/cookies.txt'); // ciacha
        $this->data = curl_exec($zapytanie);
        $this->getinfo = curl_getinfo($zapytanie);
        curl_close($zapytanie);
    }
    private function POSTrequest($link,$post){
        $zapytanie = curl_init(); // adres strony
        curl_setopt($zapytanie, CURLOPT_URL, $link);
        curl_setopt($zapytanie, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.4) Gecko/20091030 Gentoo Firefox/3.5.4"); // useragent
        curl_setopt($zapytanie, CURLOPT_HTTPHEADER, array("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8","Accept-Language: pl,en-us;q=0.7,en;q=0.3","Referer: https://www.linkedin.com/uas/login-submit", "Connection: keep-alive","Content-Type: application/x-www-form-urlencoded"));
        curl_setopt($zapytanie, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($zapytanie, CURLOPT_COOKIEFILE, dirname(__file__) . '/cookies/'.$this->adres_ip.'/cookies.txt'); // ciacha
        curl_setopt($zapytanie, CURLOPT_COOKIEJAR, dirname(__file__) . '/cookies/'.$this->adres_ip.'/cookies.txt'); // ciacha
        curl_setopt($zapytanie, CURLOPT_POST, 1);
        curl_setopt($zapytanie, CURLOPT_POSTFIELDS, $post);
        $this->data = curl_exec($zapytanie);
        $this->getinfo = curl_getinfo($zapytanie);
        curl_close($zapytanie);
    }

答案 2 :(得分:0)

纯jquery无法做到这一点。您需要执行以下操作之一:

  1. 使用代理服务器(您可以通过代理运行请求,使用PHP)。

  2. 如果您拥有w3schools.com,则可以启用自己的网站通过JSON访问XML(通过启用CORS)。