Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用jQuery解析XML_Javascript_Jquery_Html_Xml_Xmlhttprequest - Fatal编程技术网

Javascript 用jQuery解析XML

Javascript 用jQuery解析XML,javascript,jquery,html,xml,xmlhttprequest,Javascript,Jquery,Html,Xml,Xmlhttprequest,我用过这个: $(document).ready(function () { $.ajax({ type: "GET", url: "http://domain.com/languages.php", dataType: "xml", success: xmlParser }); }); function xmlParser(xml) { $('#load').fadeOut(); $(xml).find("result").each(functi

我用过这个:

$(document).ready(function () {
$.ajax({
    type: "GET",
    url: "http://domain.com/languages.php",
    dataType: "xml",
    success: xmlParser
   });
});

function xmlParser(xml) {
  $('#load').fadeOut();
  $(xml).find("result").each(function () {

  $(".main").append('' + $(this).find("language").text() + '');
  $(".lang").fadeIn(1000);

  });
}
我在我的计算机上使用了一个本地XML文件,它工作得很好,但是当我将URL更改为网站时,它只是一直在加载


如何使其工作?

跨域请求受到限制。特别是,如果要查询domain.com,则此页面本身应位于domain.com()上。您不能从localhost或您的文件系统查询domain.com(尽管有一些技巧)

编辑
这项技术非常简单,对我来说很有效。但显然,您不能使用它来查询本地主机。

是的,限制了您可以从其他站点获取的内容。如果可以,下载XML文件,将其保存到您的域中,然后使用jQuery发挥您的魔力。我已经做过很多次了(最好是通过cURL/wget和cron作业来实现自动化)。或者使用类似SimplePie的东西


注意,sub.domain.com和domain.com也被视为不同的域。

您必须通过站点上的脚本代理xml

例如getxml.php:


然后,将url修改为:
url:http://mysite.com/getxml.php?q=http://domain.com/languages.php“

我不确定只检查HTTP\u X\u请求的\u是否会带来任何安全影响,因此您可能需要在那里添加更多安全性来检查ajax,但这确实是可行的

<?php

 if(isset($_GET['q']) && isAjax())
 {
    $q = strip_tags($_GET['q']);
    header("Status: 200");
    header("Content-type: text/xml");
    echo  file_get_contents($q,0);   
    exit();
 }

function isAjax() {
    return (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && 
    ($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'));
}
?>