消耗本地asmx的相对路径

时间:2011-07-07 14:43:21

标签: c# jquery asp.net web-services asmx

在我的asp.net webapp中,我正在使用本地Web服务来检索数据。系统是一个弹出窗口(实际上是另一页) 所以这是jquery代码:

$(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);
            }
        });

当你在网站的根目录时工作正常,一旦你在其他页面中启动脚本,路径就不正确,因此没有达到.x

我尝试用代字号“〜”代替../但它不起作用.. url: "~/WebServicesASMX/PMywebserv.asmx/Test"

是否有可能在我的jquery脚本中指定亲戚路径?

2 个答案:

答案 0 :(得分:1)

VirtualPathUtility拯救!

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

请参阅Rick Strahl撰写的这篇文章:http://www.west-wind.com/weblog/posts/2009/Dec/21/Making-Sense-of-ASPNET-Paths

请注意,要使其工作,脚本需要位于由ASP.NET处理的页面中,例如aspx,ascx,MVC查看。如果您的脚本位于普通的js文件中,则需要移动它,或者引用您在ASP.NET代码中其他地方定义的javascript全局变量。

答案 1 :(得分:1)

使用

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