【问题标题】:XML fetching using javascript使用 javascript 获取 XML
【发布时间】:2013-01-02 21:42:10
【问题描述】:

此代码不会执行。我认为xhttp.send() 函数有问题。因为alert函数在它执行之前,而alert函数在它之后没有执行:

<html>
<head>
    <title>PAGE OUTPUT</title>
    <script type="text/javascript">
    function aa()
    {   
        var xhttp;
        alert("hi welcome"); 
        if(window.XMLHttpRequest)
        {
            xhttp=new XMLHttpRequest();
            alert("hi");
        }
        else
        {
            xhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
        xhttp.open("GET","vehicle.xml",false);
        alert("OPEN EXECUTED");
        xhttp.send();
        alert("SEND EXECUTED");
        xmlDoc=xhttp.responseXML;
        alert("HI I HAVE REACHED OVER HERE");
        var vehicle=xmlDoc.documentElement;
        var car=vehicle.firstChild.nodeValue;
        var price=car.firstChild.nodeValue;
        alert(price);
    }
    </script> 
</head>
<body>
<center><input type="submit" onclick="aa()"></center>
</body>

【问题讨论】:

  • 您是否尝试将此页面作为本地文件系统中的文件?这会导致跨站点 XHR,大多数浏览器都会禁止它。
  • 两个文件都在同一个文件夹中...我认为这应该不是问题
  • 如果您访问本地文件,浏览器将无法发送任何 XHR。请在下面查看我的答案。

标签: javascript xml send


【解决方案1】:

您最好检查 URL 是否类似于 file:///path/to/file 出于安全原因,浏览器将无法从页面发送任何 XHR(现在看来不合理)。

您应该为此案例启动一个服务器,并在 http://localhost/path/to/file 中访问该页面。我知道的最简单的方法是启动Python SimpleHTTPServer。如果你使用的是 MS Windows,你可以自己安装 python,或者它可以在 Mac/任何 Linux 发行版中使用。然后按照以下步骤操作

  • 启动终端(在 MS Windows 上称为命令行提示符,使用 Win+R 然后键入 cmd 启动终端)
  • cd 到文件所在的路径
  • 执行python -m SimpleHTTPServer
  • 在浏览器中访问http://localhost:8000/html_file
  • 像往常一样点击那个按钮

现在你会看到那些alerts。此外,如有必要,您可能需要将 xmlDoc=xhttp.responseXML 更改为 xmlDoc = xhttp.responseText

那就试试jQuery吧,这对ajax来说容易多了。

【讨论】:

    【解决方案2】:

    取消提交按钮点击

    onclick="aa(); return false;"
    

    【讨论】:

    • 我试图从 xml 文件 vehicle.xml 中获取一些值,但我认为 xhttp.send() 语句没有执行...文件(即 vehicle.xml 和这个文件都在同一个文件夹)
    猜你喜欢
    • 2013-04-21
    • 2011-08-24
    • 1970-01-01
    • 1970-01-01
    • 2014-02-19
    • 2019-01-29
    • 1970-01-01
    • 1970-01-01
    • 2013-01-09
    相关资源
    最近更新 更多