ASP.NET Jquery Автозаполнение - PullRequest
       5

ASP.NET Jquery Автозаполнение

3 голосов
/ 13 декабря 2011

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

Код на стороне сервера здесь:

[WebMethod]
    public string[] ReturnPostcodes(string term)
    {
        PostcodeService postcodes = new PostcodeService();
        var results = postcodes.ReturnPostcodes().Where(p => p.Postcode.StartsWith(term.ToUpper())).Select(p => p.Postcode).Take(20).ToArray();
        return results;

    }

HTML здесь:

<tr>
        <td>Mobile Telephone:</td>
        <td><asp:TextBox runat="server" ID="txtPostcode"></asp:TextBox></td>
    </tr>

jquery здесь:

$(document).ready(function () {
        $('#ctl00_ctl00_mainContent_mainContent_txtPostcode').each(function () {

            $(this).autocomplete({
                 source: '/Postcodes.asmx/ReturnPostcodes'
            });
        });
    });

Ответы [ 3 ]

3 голосов
/ 13 декабря 2011

Причина, по которой ничего не отображается, в том, что вы не даете автозаполнению правильный формат данных, а также не указываете, как загружать данные. Вы можете вернуть формат JSON или XML из веб-сервиса или проанализировать ответ самостоятельно, используя jquery. Оформить заказ Сайт автозаполнения jquery ui для Удаленные данные JSONP и XML-данные, проанализированные один раз примеры.

0 голосов
/ 13 декабря 2011

asp.net WebMethods возвращает объект json, содержащий ответ в переменной 'd' (и при вызове его с помощью jQuery XHR есть несколько параметров), фрагмент сценария:

 <script type="text/javascript">
        $(function () {
            var lastXhr, cache = {};

            $('#<%= Search.ClientID %>').autocomplete({
                source: function (request, response) {
                    var term = request.term;
                    if (term in cache) {
                        response(cache[term]);
                        return;
                    }

                    lastXhr = $.ajax({
                        type: "POST",
                        url: "Default.aspx/GetBooks",
                        data: "{ \"term\": \"" + request.term + "\" }",
                        contentType: "application/json; charset=utf-8",
                        dataType: "json",
                        success: function (data, status, xhr) {
                            cache[term] = data.d;
                            if (xhr === lastXhr) {
                                response(data.d);
                            }
                        }
                    });
                }
            });
        });
    </script>
0 голосов
/ 13 декабря 2011

Убедитесь, что Result не пусто

Попробуйте использовать StartsWith и передать сравнение String

  var results = postcodes.ReturnPostcodes().Where(p => p.Postcode.StartsWith(term,StringComparison.InvariantCultureIgnoreCase)).Select(p => p.Postcode).Take(20).ToArray();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...