Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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:简单xml请求_Javascript_Xml - Fatal编程技术网

Javascript:简单xml请求

Javascript:简单xml请求,javascript,xml,Javascript,Xml,我正在学习这些东西,所以我的代码可能不好看。。。但我希望能得到一些帮助:) 我没有编写以下代码,但是从其他网站上获得的: function text_xml() { realXmlUrl="http://jumac.com/del_me_fruits.xml"; http_request = false; http_request = new XMLHttpRequest(); if (http_request.overrideMimeType) {

我正在学习这些东西,所以我的代码可能不好看。。。但我希望能得到一些帮助:)

我没有编写以下代码,但是从其他网站上获得的:

function text_xml()
{
    realXmlUrl="http://jumac.com/del_me_fruits.xml";
    http_request = false;
    http_request = new XMLHttpRequest();
    if (http_request.overrideMimeType)
    {
        http_request.overrideMimeType('text/xml');
    }

    http_request.onreadystatechange = this.response_xml;
    http_request.open('GET', realXmlUrl, true);
    http_request.send(null);
    xmlDoc = http_request.responseXML;
}

function response_xml()
{
    if (self.http_request.readyState == 4)
    {
        document.getElementById("ex").appendChild(document.createTextNode(" Done!"));
        getFruits(http_request.responseText);
    }
}

function getFruits(xml) {
  var fruits = xml.getElementsByTagName("fruits")[0];
  if (fruits) {
    var fruitsNodes = fruits.childNodes;
    if (fruitsNodes) {
      for (var i = 0; i < fruitsNodes.length; i++) {
        var name = fruitsNodes[i].getAttribute("name");
        var colour = fruitsNodes[i].getAttribute("colour");
        alert("Fruit " + name + " is coloured " + colour);
      }
    }
  }
}

我做错了什么?

responseText
是字符串,而不是XML。您正在寻找
responseXML

更新

如果脚本是从不同于正在加载的XML文档()的域加载的,则XMLHttpRequest的行为将因浏览器而异

在IE 8上,它会弹出一个警告窗口,抱怨“页面正在访问不受其控制的信息。这会带来安全风险。是否要继续?”如果单击“是”,则它将正常工作(即,将加载XML并显示水果警报)

然而,在Chrome 12上,它不会弹出任何内容,并且会说“XMLHttpRequest无法加载。访问控制允许源站不允许源站”。由于此错误,请求对象的responseXML属性将为null,您将看到您遇到的错误

还有其他关于跨域XMLHttpRequest的问题,您可以从中找到如何解决您的问题,例如和


函数text_xml(){
realXmlUrl=”http://jumac.com/del_me_fruits.xml";
http_请求=false;
http_请求=新的XMLHttpRequest();
if(http_请求.overrideMimeType){
http_请求。重写emimetype('text/xml');
}
http_request.onreadystatechange=this.response_xml;
http_request.open('GET',realXmlUrl,true);
http_请求发送(空);
xmlDoc=http_request.responseXML;//这没有任何内容
}
函数响应_xml(){
if(self.http_request.readyState==4){
document.getElementById(“ex”).appendChild(document.createTextNode(“Done!”);
getFruits(http_-request.responseXML);
}
}
函数getFruits(xml){
var fruits=xml.getElementsByTagName(“fruits”)[0];
如果(水果){
var fruitsNodes=fruits.childNodes;
if(果穗){
对于(变量i=0;i

responseText
是一个字符串,而不是XML。您正在寻找
responseXML

更新

如果脚本是从不同于正在加载的XML文档()的域加载的,则XMLHttpRequest的行为将因浏览器而异

在IE 8上,它会弹出一个警告窗口,抱怨“页面正在访问不受其控制的信息。这会带来安全风险。是否要继续?”如果单击“是”,则它将正常工作(即,将加载XML并显示水果警报)

然而,在Chrome 12上,它不会弹出任何内容,并且会说“XMLHttpRequest无法加载。访问控制允许源站不允许源站”。由于此错误,请求对象的responseXML属性将为null,您将看到您遇到的错误

还有其他关于跨域XMLHttpRequest的问题,您可以从中找到如何解决您的问题,例如和


函数text_xml(){
realXmlUrl=”http://jumac.com/del_me_fruits.xml";
http_请求=false;
http_请求=新的XMLHttpRequest();
if(http_请求.overrideMimeType){
http_请求。重写emimetype('text/xml');
}
http_request.onreadystatechange=this.response_xml;
http_request.open('GET',realXmlUrl,true);
http_请求发送(空);
xmlDoc=http_request.responseXML;//这没有任何内容
}
函数响应_xml(){
if(self.http_request.readyState==4){
document.getElementById(“ex”).appendChild(document.createTextNode(“Done!”);
getFruits(http_-request.responseXML);
}
}
函数getFruits(xml){
var fruits=xml.getElementsByTagName(“fruits”)[0];
如果(水果){
var fruitsNodes=fruits.childNodes;
if(果穗){
对于(变量i=0;i

考虑使用类似jquery的javascript库


jqueryajax几乎是自我解释的,您不必弄乱浏览器的兼容性

考虑使用类似jquery的javascript库


jqueryajax几乎是自我解释的,您不必弄乱浏览器的兼容性

我通常喜欢在处理任何类型的跨服务器传输数据时使用字典

提供了一种通过发送XML HTTP请求的简洁方法。

加载项目,这可以与代码分开


Proquest(“POST”,
你在这里,
数据,
标题, RType, 忽略JSON错误, 回调);

这样您就可以轻松地编写:


Proquest(“获取”http://jumac.com/del_me_fruits.xml,跳过,{'Content-type':'text/xml'},'response',false,函数(resp){
分别
Error: xml.getElementsByTagName is not a function
<body>
    <script type="text/javascript">
        function text_xml() {
            realXmlUrl = "http://jumac.com/del_me_fruits.xml";
            http_request = false;
            http_request = new XMLHttpRequest();
            if (http_request.overrideMimeType) {
                http_request.overrideMimeType('text/xml');
            }

            http_request.onreadystatechange = this.response_xml;
            http_request.open('GET', realXmlUrl, true);
            http_request.send(null);
            xmlDoc = http_request.responseXML; // this doesn't have anything
        }

        function response_xml() {
            if (self.http_request.readyState == 4) {
                document.getElementById("ex").appendChild(document.createTextNode(" Done!"));
                getFruits(http_request.responseXML);
            }
        }

        function getFruits(xml) {
            var fruits = xml.getElementsByTagName("fruits")[0];
            if (fruits) {
                var fruitsNodes = fruits.childNodes;
                if (fruitsNodes) {
                    for (var i = 0; i < fruitsNodes.length; i++) {
                        var name = fruitsNodes[i].getAttribute("name");
                        var colour = fruitsNodes[i].getAttribute("colour");
                        alert("Fruit " + name + " is coloured " + colour);
                    }
                }
            }
        }
    </script>

    <input type="button" value="Click me" onclick="text_xml();" />
    <p><div id="ex"></div></p>
</body>