【问题标题】:jQuery Ajax Url Path Breaks When Accessed in different directory levels在不同目录级别访问时,jQuery Ajax Url 路径中断
【发布时间】:2011-04-25 23:14:09
【问题描述】:

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

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

1) 我在 Asp.Net 4.0 上运行。 2) 我当前的环境有一个本地、Dev、Test 和 Prod 环境(硬编码 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# 中设置它的值。希望有更好的方法吗?

谢谢!

【问题讨论】:

    标签: javascript asp.net jquery ajax


    【解决方案1】:

    你试过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"
    

    【讨论】:

    • 是的,我在我们/时将“/”作为初始路径的一部分。一个缺点是我的一个环境实际上被设置为虚拟目录而不是它自己的网站,这增加了新的痛苦。 :/ 认为选项 2 将成为我的路线。
    猜你喜欢
    • 2014-08-28
    • 1970-01-01
    • 1970-01-01
    • 2017-08-05
    • 1970-01-01
    • 2013-09-14
    • 1970-01-01
    • 2016-09-06
    • 1970-01-01
    相关资源
    最近更新 更多