使用本地asmx的相对路径

本文关键字:相对 路径 asmx | 更新日期: 2023-09-27 18:01:33

在我的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);
            }
        });

当你在站点的根目录下运行时,它工作得很好,一旦你在其他页面中启动脚本,路径就不正确,所以无法到达asmx .

我试过用波浪形的"~"代替…/但它不起作用…url: "~/WebServicesASMX/PMywebserv.asmx/Test"

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

使用本地asmx的相对路径

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中其他地方定义的javascript全局变量。NET代码。

use

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