【问题标题】:How to use jQuery AJAX in ASP.net master page?如何在 ASP.net 母版页中使用 jQuery AJAX?
【发布时间】:2011-05-26 05:21:09
【问题描述】:

我有一个带有母版页的 ASP.net Web 应用程序。在我的母版页的菜单栏中,有一个搜索功能,用户输入查询并单击按钮。单击该按钮时,用户的浏览器会导航到显示搜索结果的页面。这种功能效果很好。

但是,我决定使用 jQuery AJAX 和 jQuery Autocomplete 来使程序更易于使用。从http://example.com/page1.aspxhttp://example.com/page2.aspx 搜索可以正常工作,但从http://example.com/subdirectory/index.aspx 则不能。

这是我执行自动完成的 javascript 代码:(来自母版页)

function setupSerialNumberAutocomplete(id) {
    $(id).autocomplete({
        source: function(request, response) {
            $.ajax({
                url: "DeviceSelection.aspx/getDeviceFieldAutocomplete",
                data: "{ 'text': '" + escape(request.term) + "', 'field': 'SerialNumber' }",
                dataType: "json",
                type: "POST",
                contentType: "application/json",
                dataFilter: function(data) { return data; },
                success: function(data) {
                    response($.map(data.d, function(item) {
                        return {
                            value: item
                        }
                    }))
                },
                error: function(xhr, status) {
                    var exception = eval("(" + xhr.responseText + ")");
                    $("#divStatus").html("Error fetching registration codes list: " + xhr.statusText + " - " + exception.Message + ".");
                }
            }); //end - ajax
        },
        minLength: 2,
        focus: function(event, ui) {
            $(id).val(ui.item.value);
            return false;
        },
        select: function(event, ui) {
            $(id).val(ui.item.value);
            return false;
        }
    }); 

这是对 DeviceSelection.aspx/getDeviceFieldAutocomplete 的 jQuery AJAX 调用,这是我的 ASP.net 代码中的 Web 服务调用。 DeviceSelection.aspx 位于http://example.com/DeviceSelection.aspx,所以我认为问题是当用户访问http://example.com/subdirectory/index.aspx 并输入查询时,它会尝试调用http://example.com/subdirectory/DeviceSelection.aspx 的Web 服务。

我怎样才能做到这一点?

【问题讨论】:

    标签: asp.net jquery ajax master-pages


    【解决方案1】:

    改成这样:

    ...
    $.ajax({
        url: "/DeviceSelection.aspx/getDeviceFieldAutocomplete",
        data: "{ 'text': '" + escape(request.term) + "', 'field': 'SerialNumber' }",
        dataType: "json",
    ...
    

    前面的“/”表示URL是相对于域的(而不是相对于当前页面的)。

    【讨论】:

    【解决方案2】:

    我们可以得到一些与虚拟目录相关的东西吗?

    如果您要在 URL 的代码中使用 <%= Request.ApplicationPath %> 并提供绝对路径会怎样?同样,您可以使用客户端解析器解析路径(我忘记了确切的语法,但它在那里)

    【讨论】:

    • @RiceFlourCookies ~ 请记住,过分努力往往是有害的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多