Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/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文件中的URL是否相对于JavaScript位置或浏览器?_Javascript_Url_Location_Relative Path - Fatal编程技术网

JavaScript文件中的URL是否相对于JavaScript位置或浏览器?

JavaScript文件中的URL是否相对于JavaScript位置或浏览器?,javascript,url,location,relative-path,Javascript,Url,Location,Relative Path,当我在JavaScript文件中使用AJAX请求时,如: ... url: "request.php" ... 当我在现场时(重写URL): http://example/some/action/id/ JavaScript通过以下方式在元标记中定位和链接: 。。。src=”http://example/js/ajaxrequest.js" ... 那么请求是否转到http://example/some/action/id/request.php或http://example/js/req

当我在JavaScript文件中使用AJAX请求时,如:

... url: "request.php" ...
当我在现场时(重写URL):

http://example/some/action/id/
JavaScript通过以下方式在元标记中定位和链接:

。。。src=”http://example/js/ajaxrequest.js" ...
那么请求是否转到
http://example/some/action/id/request.php
http://example/js/request.php

如果我将请求URL更改为
/request.php
而不是
request.php
,那么它会转到
http://example/request.php
总是吗

如果我有两个工作环境,
http://localhost/projectname/
http://projectname.com/
,文件结构总是这样(
projectname.com
是projectname目录的副本):

http://localhost/projectname/js/ajaxrequest.js
http://localhost/projectname/request.php
http://projectname.com/js/ajaxrequest.js
http://projectname.com/request.php
我可以在主页上,也可以在URL重写地址上,如:

http://localhost/projectname/
http://projectname.com/
http://localhost/projectname/some/action/id/
http://projectname.com/some/action/id/

我想在JavaScript文件中请求URL,它在所有这些条件下都能工作吗,或者我应该在JavaScript文件中添加地址,如
URL:“../request.php”

在我们公司的开发服务器上,我们遇到了类似的问题。我们通过使用子域而不是文件夹来解决它。因此它是
projectname.localhost/some/action/id/

JavaScript中的URI只插入到与该文档相关联的对象中,因此它们是相对于文档URI而不是JS src URI的

a。前者

b。对


c。我强烈建议您在所有环境中保持任何路径与根的距离相同。可以在本地设置虚拟名称托管,也可以使用Charles Proxy之类的工具在本地测试环境中重写域名。

如果您可以发布单独的问题,而不是将问题合并到一个问题中,则更可取。这样,它可以帮助人们回答你的问题,也可以帮助其他人寻找至少一个你的问题。