Как использовать JQuery AJAX на главной странице ASP.net? - PullRequest
3 голосов
/ 16 декабря 2010

У меня есть веб-приложение ASP.net с главной страницей. В строке меню моей главной страницы есть функция поиска, где пользователь вводит запрос и нажимает кнопку. Когда кнопка нажата, браузер пользователя переходит на страницу с результатами поиска. Эта функция отлично работает.

Однако я решил использовать jQuery AJAX и jQuery Autocomplete, чтобы сделать программу проще в использовании. Поиск отлично работает с http://example.com/page1.aspx и http://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;
        }
    }); 

Это вызов jQuery AJAX для DeviceSelection.aspx / getDeviceFieldAutocomplete, вызова веб-службы в моем коде ASP.net. DeviceSelection.aspx находится по адресу http://example.com/DeviceSelection.aspx,, поэтому я предполагаю, что проблема в том, что когда пользователь обращается к http://example.com/subdirectory/index.aspx и вводит запрос, он пытается вызвать веб-службу по адресу http://example.com/subdirectory/DeviceSelection.aspx.

Как я могу сделать эту работу?

Ответы [ 2 ]

4 голосов
/ 16 декабря 2010

Измените это на:

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

«/» в начале означает, что URL относится к домену (а не к текущей странице).

2 голосов
/ 16 декабря 2010

Можем ли мы получить что-то относительно виртуального каталога?

А что если вы введете <%= Request.ApplicationPath %> в коде для URL и предоставите абсолютный путь?Точно так же вы можете разрешить путь, используя клиент-распознаватель (я забыл точный синтаксис, но он есть)

...