Javascript AJAX获取相对于脚本的url

Javascript AJAX获取相对于脚本的url,javascript,ajax,Javascript,Ajax,如何形成open()调用的url部分,以便它在正确的文件夹中查找脚本,而不事先知道用户将脚本上载到了哪里? 例如,假设我们有一个名为ajax.js的javascript文件和一个名为script.php的php脚本。我们这样调用open(): open("GET", "<path>/script.php", true); 由于script.php与ajax.js位于同一目录中,但路径相对于导入ajax.js的文档,因此浏览器将查找/somedomain.com/news/scrip

如何形成open()调用的url部分,以便它在正确的文件夹中查找脚本,而不事先知道用户将脚本上载到了哪里? 例如,假设我们有一个名为ajax.js的javascript文件和一个名为script.php的php脚本。我们这样调用open():

open("GET", "<path>/script.php", true);
由于script.php与ajax.js位于同一目录中,但路径相对于导入ajax.js的文档,因此浏览器将查找/somedomain.com/news/script.php

我需要能够构建正确的url,而不知道ajax脚本已上载到何处,以便于安装,而无需每次更改url。
我该怎么做?

需要注意的几件事

1.)如果直接转到脚本的URL并检查媒体类型/mime是否为text/javascript?如果不是这样的话,一些浏览器可能不会在文件中执行任何脚本,不管是否所有脚本都编写得很完美

2.)您可以使用下面的.htaccess命令在带有JavaScript扩展名(例如example.js)的JavaScript文件中执行PHP代码

AddHandler application/x-httpd-php .js .example2 .example3
AddType text/javascript .js
如果您试图使用动态路径(这是值得称赞的),则不能将对象放在引号内,否则它将被视为字符串而不是对象

var path = 'http://localhost/site1/';
alert(path+'scripts/example.js');
3.)尝试仅将脚本包含到脚本目录中,并且仅在head元素中包含脚本文件。这将迫使您编写更好的JavaScript。对于那些抱怨在内容之后加载脚本的人,请使用“延迟”属性

<head>
<script defer="defer" src="scripts/index.js" type="text/javascript"></script>
<script defer="defer" src="scripts/onload.js" type="text/javascript"></script>
</head>
9.)您可以使用alert(对象类型);确定对象的上下文(例如对象(数组在JavaScript中称为对象)、字符串、整数(数字)等

10.)切勿对函数名或变量名使用简单的术语(例如,var open='';或function open(){})。JavaScript中有保留名称,使用这些名称会导致您在某些浏览器中拔出所有头发,而这些浏览器不会告诉您这就是脚本无法运行(并且不会触发任何错误或警告)的原因,例如Internet Explorer。尝试使用好的命名方案,如函数ajax\u upload()、var option\u this、var option\u this等。SuperEdi等编辑器有一个函数面板,因此您可以对ajax函数进行分组,并按名称排序(例如ajax\u 1\u init、ajax\u 2\u build、ajax\u 3\u请求、ajax\u 4\u处理程序、ajax\u 5\u等)


希望这有帮助。

需要注意的几件事

1.)如果直接转到脚本的URL并检查媒体类型/mime是否为text/javascript?如果不是这样的话,一些浏览器可能不会在文件中执行任何脚本,不管是否所有脚本都编写得很完美

2.)您可以使用下面的.htaccess命令在带有JavaScript扩展名(例如example.js)的JavaScript文件中执行PHP代码

AddHandler application/x-httpd-php .js .example2 .example3
AddType text/javascript .js
如果您试图使用动态路径(这是值得称赞的),则不能将对象放在引号内,否则它将被视为字符串而不是对象

var path = 'http://localhost/site1/';
alert(path+'scripts/example.js');
3.)尝试仅将脚本包含到脚本目录中,并且仅在head元素中包含脚本文件。这将迫使您编写更好的JavaScript。对于那些抱怨在内容之后加载脚本的人,请使用“延迟”属性

<head>
<script defer="defer" src="scripts/index.js" type="text/javascript"></script>
<script defer="defer" src="scripts/onload.js" type="text/javascript"></script>
</head>
9.)您可以使用alert(对象类型);确定对象的上下文(例如对象(数组在JavaScript中称为对象)、字符串、整数(数字)等

10.)切勿对函数名或变量名使用简单的术语(例如,var open='';或function open(){})。JavaScript中有保留名称,使用这些名称会导致您在某些浏览器中拔出所有头发,而这些浏览器不会告诉您这就是脚本无法运行(并且不会触发任何错误或警告)的原因,例如Internet Explorer。尝试使用好的命名方案,如函数ajax\u upload()、var option\u this、var option\u this等。SuperEdi等编辑器有一个函数面板,因此您可以对ajax函数进行分组,并按名称排序(例如ajax\u 1\u init、ajax\u 2\u build、ajax\u 3\u请求、ajax\u 4\u处理程序、ajax\u 5\u等)

希望这有帮助。

open(“GET”,“/script.php”,true)
将始终在网站的根文件夹中查找该文件。
打开(“GET”,“/script.php”,true)
将始终在网站的根文件夹中查找该文件。