gpt4 book ai didi

javascript - 如何在 Javascript 中获取相对路径?

转载 作者:可可西里 更新时间:2023-11-01 01:46:53 25 4
gpt4 key购买 nike

在我的 ASP.net web 项目中,我在 .js 文件中编写了以下 Javascript 代码:

function getDeviceTypes() {
var deviceTypes;
$.ajax({
async: false,
type: "POST",
url: "Controls/ModelSelectorWebMethods.aspx/getDeviceTypes",
data: '{ }',
contentType: "application/json;",
dataType: "json",
success: function(response) {
deviceTypes = response.d;
},
error: function(xhr, status) {
debugger;
alert('Error getting device types.');
}
}); // end - $.ajax
return deviceTypes;
}

在我尝试将此 .js 文件加载到子目录中的页面之前,它一直运行良好。

假设我的项目名称是widget

当我在主虚拟目录中使用此代码时,Javascript 将 Controls/ModelSelectorWebMethods.aspx/getDeviceTypes 解释为 https://mysite.com/widget/Controls/ModelSelectorWebMethods.aspx/getDeviceTypes 一切正常。但是,从子目录中的页面,Javascript 将其解释为 https://mysite.com/widget/subdirectory/Controls/ModelSelectorWebMethods.aspx/getDeviceTypes 并且它不起作用。

如何编写我的 Javascript 代码,以便可以从应用程序中任何目录中的页面调用 AJAX 网络方法?

最佳答案

你有两个选择:

  1. 在 JavaScript 中构建一个配置/首选项对象,其中包含所有您的环境特定设置:

     var config = {
    base: <% /* however the hell you output stuff in ASPX */ %>,
    someOtherPref: 4
    };

    然后在 AJAX 网址前加上 config.base 前缀(并更改 config.base 的值,无论您是在开发/测试/部署服务器上。)

  2. 使用 <base /> 用于为所有相对 URL 设置 URL 前缀的 HTML 标记。这会影响所有 相对 URL:图像、链接等。

就个人而言,我会选择选项 1。您很可能会发现该配置对象在其他地方会派上用场。

显然,配置对象必须包含在评估服务器端代码的站点的一部分中;一个.js如果不配置您的服务器,文件将不会剪切它。我总是在 HTML 中包含配置对象 <head> ;它是一个小的配置对象,其内容可以在每个页面上更改,因此完全有理由将其粘贴在那里。

关于javascript - 如何在 Javascript 中获取相对路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6310620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com