使用jQuery导入XML:适用于服务器,而不是本地

时间:2013-04-14 19:50:11

标签: javascript xml jquery

我正在编写一个读取XML文件然后输出数据的脚本。它在我的Web服务器上运行时效果很好,但不能从我的本地计算机运行。 (“542Data.xml”文件与服务器和计算机上的HTML页面存储在同一文件夹中,我检查了所有文件版本是否相同。我在Firefox和Chrome中尝试过相同的结果。)

<div id="output"></div>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

<script>
$(document).ready(function()
{
    $.ajax({
        type: "GET",
        url: "542Data.xml",
        dataType: "xml",
        success: parseXml
    });
});

function parseXml(xml)
{
    $(xml).find("point").each(function(index)
    {
        $("#output").append("Name: " + $(this).attr("name") + "<br />");
    });
}

</script>

XML的结构如下:

<?xml version="1.0"?>
<destinations>
    <point name="Tot Lot at Bryan Park"> 
        <lat>39.15611</lat>
        <long>-86.52664</long>
        <type>outdoors</type>
    </point>
    <point name="Playground at Cascades Park"> 
        <lat>39.19633</lat>
        <long>-86.53581</long>
        <type>outdoors</type>
    </point>
</destinations>

我需要更改以使其在本地工作?

编辑:我错了,它在Firefox中运行。 (尴尬!)

5 个答案:

答案 0 :(得分:3)

你的脚本在我的Firefox中运行正常。

Chrome有一些安全功能,禁止您想要执行的操作(使用file:///进行AJAX请求)。您需要使用以下命令启动浏览器:

chrome --disable-web-security

禁用安全检查。 (--allow-file-access-from-files也可以做到这一点,但我还没有测试过它)

警告:禁用安全检查会影响您的浏览器安全性,并且只能用于临时开发目的。如果您计划在较长时间内从本地计算机运行代码,请考虑在本地计算机上安装Web服务器。

答案 1 :(得分:0)

如果通过“本地工作”表示您在文件夹中包含html和xml文件,并通过双击打开HTML文件,那么就没有办法了。

为了使其在本地工作,您需要一个可以解析http请求的Web服务器。在文件系统上打开本地文件并不是这里发生的事情。 .ajax()正在发出服务器请求。如果没有服务器,它将无法工作。

答案 2 :(得分:0)

你在用什么开发?检查您使用的开发服务器是否可以提供XML文件。

答案 3 :(得分:0)

根据给定的(小)信息。可能存在安全原因,即从谷歌的存储库导入jquery。请提供更多代码或查看firefox中的错误控制台--ctr + shift + j并复制粘贴错误(如果有),或者只是下载jquery并将其包含在本地位置的路径中。

答案 4 :(得分:0)

它在服务器上运行但在您的计算机上运行。请参阅,ajax请求需要运行本地服务器。要使其工作,请在计算机上启动一些本地服务器。例如,如果您在Windows上,则下载WAMP,如果在Linux上,则安装LAMP。将您的文件放在www文件夹中。然后启动本地服务器..然后使用localhost / your_file_name访问您的文件。那会给你你想要的结果。