javascript - 在不同目录级别访问时,jQuery Ajax Url 路径会中断

标签 javascript asp.net jquery ajax

现在是另一个非常简单的问题的时候了,我找不到一个优雅的解决方案。基本上,我有一个使用 jQuery Ajax 调用的应用程序。在此调用中,您必须为所调用的服务指定 URL 路径。在本例中,我需要从应用程序中的多个文件调用此 JavaScript 函数,并且这些文件位于文件夹结构的不同级别。

问题是,如何优雅地处理这种情况,以便可以从应用程序中的任何位置调用 JS 函数。这是我的限制:

1) 我正在 Asp.Net 4.0 上运行。 2)我当前的环境有本地、开发、测试和生产环境(硬编码 URL 路径不起作用)。

代码片段:

    function MakeTheCall() {

  $.ajax({
   type: "POST",
   url: "Services/FileName.asmx/Handler", //Path in Question
   data: "",
   contentType: "application/json; charset=utf-8",
   dataType: "json",
   success: function(result) {
   },
   error: function(xmlHttpRequest, status, err) {
   }

  });
}

我希望能够从不同目录级别的文件调用此函数(位于外部 JavaScript 文件中),例如:

1) http://SomeDomain.com/SomeDir/CallingFile.aspx 2) http://SomeDomain.com/CallingFile.aspx

有什么建议吗?我可以想到几种不同的场景来实现这一目标,但大多数都围绕创建 JavaScript 变量并在 C# 中设置其值。希望有更好的方法吗?

谢谢!

最佳答案

您是否尝试过url:“/Services/FileName.asmx/Handler”

编辑:上述内容的适用性取决于您的“服务”目录是否始终位于与域名相关的同一级别。如果您将整个应用程序部署在不同的路径级别下,那么您需要使用

// in code-behind file
string rootURL = HttpContext.Current.Request.Url.GetLeftPart(System.UriPartial.Authority) + 
    "/" + HttpContext.Current.Request.ApplicationPath + "/";

// in .aspx
url: <%Response.Write(rootURL)%> + "Services/FileName.asmx/Handler"

关于javascript - 在不同目录级别访问时,jQuery Ajax Url 路径会中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3942910/

相关文章:

javascript - 鼠标悬停功能不起作用

ASP.NET Response.Redirect 使用 302 而不是 301

asp.net - 设置动态验证表单loginUrl?

javascript - Controller 上未命中断点,但返回了来自 Controller 的数据

php - 使用 PHP/Ajax/jQuery 创建产品关系

javascript - 我想从点击事件更改为按键事件

javascript - 为什么单击按钮时未打开对话框?

javascript - 如果选中复选框,如何自动粘贴值

javascript - 脚本在 jsfiddle 中工作而不是在静态文件中?

javascript - Electron 定位器的使用方法