Автозаполнение jQuery с проблемой asmx - PullRequest
1 голос
/ 24 декабря 2010

У меня странная проблема.Я пытаюсь использовать автозаполнение jQuery с веб-сервисом asmx.Мой код JavaScript выглядит так:

$('#txtUsers').autocomplete('AjaxHandler.asmx/GetUserData', {
    width: 320,
    max: 5,
    minChars: 3,
    parse: function(data) {
        var items = data.d;
        var parsed = [];
        for (var i = 0; i < items.length; i++)
            parsed.push({
            data: [items[i]],
            value: items[i],
            result: [items[i]]
        });
        return parsed;
    }
});

, а код моего веб-сервиса:

[WebService]
[ScriptService]
public class AjaxHandler : WebService
{
    [WebMethod]
    public List<UserData> GetUserData(string q)
    {
        //My code here.....
    }
}

Однако мой веб-метод не вызывается из автозаполнения.Однако всякий раз, когда я пытаюсь вызвать тот же веб-метод из jQuery.ajax, он срабатывает правильно.Любая помощь?

Ответы [ 2 ]

1 голос
/ 24 декабря 2010

Я проверил, что автозаполнение отправить запрос на получение, но вы принимаете только почтовые запросы.Итак, я вижу, что вы также нашли его.

Я предлагаю использовать простой HttpHandler и возвращать данные в виде json, используя newton json serializer , потому что веб-служба повторно настроена «завернутый»данные.Это должен быть очень простой обработчик:

List<UserData> items = GetUserDataItems();
string json = JsonConvert.SerializeObject(items);

// повторный запуск json для клиента

Также в коде клиента установите для dataType значение json:

dataType: "json",

и выполните синтаксический анализэто:

parse: function (data) {
    return $.map(data, function (row, i) {
        return {
            data: row,
            value: row,
            result: row
        }
    });
},
1 голос
/ 24 декабря 2010

Да, я тоже с этой проблемой. Ни ScriptService, ни ScriptMethod не помогают при автозаполнении. Самый простой способ обойти это преобразовать ваш .asmx в .ashx и управлять возвращаемым результатом, как это ожидается плагином AJAX с помощью сериализатора JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...