2011-07-07 69 views
0

在我的asp.net webapp中,我使用本地web服務來檢索數據。該系統是在一個彈出(至極,其實是一個又一個頁面) 所以這裏的jQuery代碼:消耗本地asmx的相對路徑

$(document).ready(function() { 
    $('#ddlToBind').change(function() {    
     var parameter = "{'aId':'" + $("#ddl").val() + "'}"; 
     $.ajax({ 
      url: "../WebServicesASMX/PMywebserv.asmx/Test", 
      data: parameter, 
      dataType: "json", 
      type: "POST", 
      contentType: "application/json", 
      success: function (data) { 
       $('#ddlToBind>option').remove(); 
       for (var i = 0; i < data.d.length; i++) { 

        $("#ddlToBind").append("<option value='" + data.d[i].Id + "'>" + data.d[i].Name + "</option>"); 
       };          
      }, 
      error: function (xmlHttpRequest, textStatus, errorThrown) { 
       alert(errorThrown); 
      } 
     }); 

這是工作好,而你在網站的根,一旦你在其他頁面啓動腳本路徑是不正確的那麼ASMX達不到..

我用波浪嘗試「〜」代替../但它不工作.. url: "~/WebServicesASMX/PMywebserv.asmx/Test"

它是一個可能性指定我的jQuery腳本中的親屬路徑?

回答

1

VirtualPathUtility to rescue!

url: "<%= VirtualPathUtility.ToAbsolute("~/WebServicesASMX/PMywebserv.asmx/Test") %>", 

看到這個職位由裏克施特拉爾:http://www.west-wind.com/weblog/posts/2009/Dec/21/Making-Sense-of-ASPNET-Paths

需要注意的是這個工作的腳本需要在由ASP.NET處理例如頁面aspx,ascx,MVC View。如果你的腳本是一個普通的js文件,你需要移動它,或者引用一個你在ASP.NET代碼中定義的javascript全局變量。

+0

感謝你選擇的解釋 – bAN

1

使用

<%= ResolveUrl("~/WebServicesASMX/PMywebserv.asmx/Test") %> 
+0

THX是工作壓力太大! – bAN