1

我在远程服务器中有一个 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"); 

    } 
    });
4

3 回答 3

3

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

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

编辑一个简单的谷歌搜索结束了这里。其他人更清楚地解释了解决方案的地方。您可以使用它。

于 2013-08-29T07:46:32.240 回答
0

这对于纯 jquery 是不可能的。您将需要执行以下操作之一:

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

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

于 2013-08-29T08:47:12.460 回答
0

ajax跨域真的很难用,去google看看吧。使用 ajax 在您的服务器中调用 .php 并使用 curl post。

我英语不好所以

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

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

这是我的 2 curl 函数,只需更改结束行, $this->data 即可返回

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);
    }
于 2013-08-29T07:11:47.280 回答