是时候提出另一个非常简单的问题了,我找不到合适的解决方案。基本上,我有一个使用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"

10-08 01:49