微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JavaScript相对AJAX调用路径

我有一个包含 PHPJavaScript文件的脚本.
所有这些文件都在根文件夹/ myfolder中.

让我说我必须在我的网站上包含的脚本是/myfolder/script.js,问题是在script.js我有ajax调用../myfolder/ajax.PHP,因为路径是相对的如果我在页面/a/b/page.PHP上有这样的内容,那么包含脚本的页面将无效:

< script src =“../../ myfolder / script.js>< script>因为这将调用来自../myfolder/ajax.PHP的ajax方法,如AJAX调用中所述,在本例中是/a/myfolder/ajax.PHP.

如何重写AJAX调用URL,以便它始终指向正确的文件,无论script.js包含在哪里?

ROOT
|---myfolder
    |--script.js
    |--ajax.PHP
|--page1.PHP
|--subfolder
   |--page2.PHP
   |--subfolder
      |--page3.PHP

解决方法

/**
 * returns the current context path,* ex: http://localhost:8080/MyApp/Controller returns /MyApp/
 * ex: http://localhost:8080/MyApp returns /MyApp/
 * ex: https://www.example.co.za/ returns /
 */
function getcontextpath() {
    var ctx = window.location.pathname,path = '/' !== ctx ? ctx.substring(0,ctx.indexOf('/',1) + 1) : ctx;
    return path + (/\/$/.test(path) ? '' : '/');
}

在像http://www.example.com/ajax这样的网址上:

getcontextpath() + 'myfolder/ajax.PHP'

将返回/ajax/myfolder/ajax.PHP

类似于http://www.example.com/这样的网址:

getcontextpath() + 'myfolder/ajax.PHP'

将返回/myfolder/ajax.PHP

最后在http://www.example.com/myfolder/a/b/c/d/e/f/g/这样的网址上:

getcontextpath() + 'myfolder/ajax.PHP'

将返回/myfolder/ajax.PHP

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐