通过Ajax调用调用远程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"); } });
是的你肯定会遇到ajax跨域问题。你现在可以使用两种方法。
- 首先是使用proxy.example YQL 。
- 使用跨源资源共享
这是一个在这里分享的一个小问题。我不会在你的代码上实现它。但是如果你检查这些东西我相信你可以解决这个问题。
编辑一个简单的谷歌搜索到此为止 。 其中一些人更清楚地解释了解决方案。你可以利用它。
它真的很难使用ajax跨域,检查谷歌。 使用ajax在你的serwer中调用.php并使用curl post。
我的英语很糟糕
创建调用GET到ajax.php和ajax.php写。
echo GETrequest("http://www.w3schools.com/");
这是我的2curlfunction,只需更改结束行,$ 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); }
纯jquery无法实现这一点。 您需要执行以下操作之一:
-
使用代理服务器(您可以通过代理运行请求,使用PHP)。
-
如果您拥有
w3schools.com
,则可以通过JSON启用您自己的站点来访问XML(通过启用CORS)。