这是另一个非常简单的问题,我无法找到一个优雅的解决方案。基本上,我有一个使用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#中设置它的值。希望有更好的方法吗?
谢谢!
答案 0 :(得分:3)
您是否尝试过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"