jquery - JQuery Post 调用中的相对 URL

标签 jquery asp.net-mvc url-routing

我有以下情况。

我开发了我的第一个 MVC Asp.Net 应用程序。它在我的服务器上运行,地址如下

http://localhost:59441/

我写了一些类似这样的 JQuery Post 方法

  $.ajax({
        type: "POST",
        url: "/CeduleGlobale/UpdateCheckBox", ...

CeduleGlobale 是我的 ControllerName 和 UpdateCheckBox 是我的方法名

当我将应用程序放在 testServer 上时,它被放入 VirtualDirectory 中

因此现在是应用程序

http://testServer/JprApplication/

不再需要指定端口和应用程序名称

当我开始测试时,我很快注意到我的 JQuery Post 调用不再起作用......

我修改了它们,所以现在的 URL 是

/JprMvc/CeduleGlobale/UpdateCheckBox

问题有两个。

  1. 这使得在我的开发计算机上进行测试变得困难,因为 IIS Express 不允许我指定虚拟目录。
  2. 我不喜欢在 JQuery 中硬编码虚拟目录名称,因为我不知道应用程序在生产环境中将具有什么名称,因此我必须修改脚本才能在生产中安装应用程序。<

我确信我缺少一些基本的东西来简化它。

谢谢

最佳答案

根据您的 JavaScript 实际位置(在 View 内或单独的 JS 文件内),您有几个选项。

选项 1 - 在 View 内

只需使用 Html Helpers 即可为您生成链接

<script type="text/javascript">
   $(function(){
        $.ajax({
           type: "POST",
           url: "@Url.Action("UpdateCheckBox", "CeduleGlobale")"
        });
   });
</script>

选项 2 - 独立 JS 文件

我们通常每个页面都有一个函数来设置该页面的处理程序。因此,我们可以执行如下操作:

查看

<script type="text/javascript">
    $(function(){
        SetOrderPage('@Url.Action("UpdateCheckBox", "CeduleGlobale")');
    });
</script>

独立 JS 文件

function SetOrderPage(ajaxPostUrl){
       $.ajax({
           type: "POST",
           url: ajaxPostUrl
       )};
}

选项 3 - 独立 JS 文件方法 2

您的 JS 文件中可以有一个全局变量,即 siteroot。这里的缺点是您需要手动创建每个操作方法路径。在每个页面上,您可以设置站点根全局变量,如下所示:

独立 JS 文件

var siteRoot;

查看

<script type="text/javascript">
    siteRoot = '@Request.ApplicationPath';
</script>

请记住,您不能在独立的 JS 文件中使用 Razor 语法。我认为最好让 Razor/MVC/.NET 动态地为您提供站点路径或 URL 路由,因为它确实会减少在站点/虚拟目录之间移动时可能出现的错误。

关于jquery - JQuery Post 调用中的相对 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18338042/

相关文章:

asp.net-mvc - EntityFramework.SqlServer 未部署在 Web 发布中

php - Phalcon Router 和 Loader 用于子文件夹结构变大。如何设置?

angular - 获取当前模块的所有路由 - Angular 2

javascript - JQuery Handsontable - remove_col 不起作用

javascript - 是否可以使用 Javascript/Jquery 将 Updatepanel 控件附加到页面?

javascript - 使用 Jquery 切换 div 后使其保持可见

javascript - 移动到[取消]隐藏元素

c# - ASP.Net MVC - 路由对象 id == 标题 - 如何处理重复项?

c# - ASP.NET - ChildActionOnly 和 NonAction 属性之间有什么区别?

ruby - 具有单一资源的多态 url