【问题标题】:Import XML with jQuery: works on server, not locally使用 jQuery 导入 XML:在服务器上工作,而不是在本地工作
【发布时间】:2013-04-15 04:35:30
【问题描述】:

我正在编写一个读取 XML 文件然后输出数据的脚本。当它在我的网络服务器上运行时,它可以完美运行,但不能从我的本地机器上运行。 (“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 中工作。 (尴尬!)

【问题讨论】:

  • 你是指本地文件系统还是本地开发服务器?
  • 本地文件系统(例如文件:\\\C:\Users\Erica)

标签: javascript xml jquery


【解决方案1】:

您的脚本在 Firefox 中运行良好。

Chrome 有一些安全功能不允许您做您想做的事情(使用 file:/// 处理 AJAX 请求)。您需要启动浏览器:

chrome --disable-web-security

禁用安全检查。 (--allow-file-access-from-files 也可以解决问题,但我还没有测试过)

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

【讨论】:

  • 是的,它是安全的,与服务器无关。就是这样。
  • 是的,它现在也适用于我的 Firefox(和 IE)。我不知道之前还有什么其他怪癖破坏了 Firefox,但现在它已经消失了。感谢您提供有关让 Chrome 合作的更多信息!
【解决方案2】:

如果“本地工作”是指将 html 和 xml 文件放在一个文件夹中并通过双击打开 HTML 文件,那么就没有办法了。

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

【讨论】:

  • ajax 不是服务器必须的!它正在使用路径,并且该路径的最后可能是服务器或只是文本文件!
  • @AJbg - 来自 api.jquery.com/jQuery.ajax - “执行异步 HTTP (Ajax) 请求。” HTTP 需要服务器。浏览器可以允许使用 URI——但这不符合标准。
  • 是的,当涉及到像 POST 这样的方法时,在这种情况下它不是一个标准,它是一个不是 POST 并且是纯 get 的请求
  • 我不明白你的意思。 POST 和 GET 是 HTTP 标准的一部分。 w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.3
  • 而 http 请求正是 ajax 的作用,您如何管理 20k+
【解决方案3】:

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

【讨论】:

  • 这家伙想通过 jquery 导入和解析 xml,不需要任何服务器组件来工作。
  • 可能涉及到服务器。例如,他可能正在使用 Visual Studio 进行本地开发,而开发服务器无法配置为提供 XML 服务(确实如此,我只是用它来说明)。例如,它未配置为提供图标文件或某些视频格式。
  • 这完全不同
【解决方案4】:

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

【讨论】:

  • 检查该解决方案并在本地包含 jquery
【解决方案5】:

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

【讨论】:

    猜你喜欢
    • 2021-10-12
    • 2020-08-14
    • 2019-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-19
    相关资源
    最近更新 更多