JavaScript中的相对和绝对路径

时间:2013-06-03 13:29:39

标签: javascript jquery relative-path absolute-path

我有以下非常简单的代码,它只读取一个JSON文件:

<html>
<head>
<meta charset="ISO-8859-1">
<title>JSON Test</title>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script>
$(function()
{
    alert (1);
    $.getJSON('data/sample.json', function(json) 
    {
        alert(2);

    });
});
</script>
</head>
<body>
    <div id="datadiv">This is the info:  </div>
</body>
</html>

我在Tomcat服务器上加载上述文件,并可以使用:http://myserver.com:8080/Html5_Test_1/jsonTest.html加载文件。上面的代码工作,并调用alert(2)。但是,如果我将用于getJSON的路径更改为/Html5_Test_1/data/sample.json,则无效。

我认为/Html5_Test_1/data/sample.json是data / sample.json的绝对路径,应该可行。事实上我已经尝试过/data/sample.json,Html5_Test_1 / data / sample.json,并且没有效果。唯一有效的路径是data / sample.json。

谁能告诉我有什么问题?绝对路径/Html5_Test_1/data/sample.json肯定适用于Java。那么,绝对路径和相对路径的概念在JavaScript中有点不同吗?

请注意,该文件作为公共文件在服务器上访问,而不是作为本地文件系统上的文件访问。

1 个答案:

答案 0 :(得分:1)

您似乎混合绝对/相对文件系统路径和绝对/相对URL。请记住,JavaScript是客户端语言,它与托管其母版页的服务器的文件系统无关。所以你宁愿提出一个相对URL,考虑到它的起点很可能是服务文件的路径。

但为什么它现在有效,你可能会问?检查一下:

/Html5_Test_1/
.. data/
.... sample.json
.. jsonTest.html

...请记住,URL将被视为与包含 jsonTest.html 文件的目录相关。很容易理解为什么正确的相对路径为data/sample.json(或'./data/sample.json')。

如果您愿意,可以将代码更改为此类代码......

$.getJSON('file:///Html5_Test_1/data/sample.json', function(json) ...);

......但这显然会使其在任何其他机器上无法使用。