Автозаполнение использует sql "Like" запрос, но возвращает каждый результат - PullRequest
0 голосов
/ 12 марта 2012

Мой код:

var db = Database.Open("dbase");
var term = Request.Form["username"] + "%";
var sql = "SELECT * from Users where Username LIKE @0";
var result = db.Query(sql, term);
var data = result.Select(p => new{label = p.username});
Json.Write(data, Response.Output);

И форма:

<script type="text/javascript">
        $(function(){
            $('#username').autocomplete({source:'getProducts'});
        });
    </script>
    </head>
    <body>
        <form method="post">
            <label for="username">Enter Username: </label>
            <input type="text" name="username" id="username" />
        </form>

Проблема: этот процесс запускается каждый раз, когда пользователь вводит символ в текстовое поле.Независимо от того, какой символ введен, возвращается каждое имя пользователя в базе данных.Я предполагаю, что проблема заключается в моем запросе SQL?

Кто-нибудь может мне помочь с этим?

Ответы [ 3 ]

6 голосов
/ 12 марта 2012

Возможно, вы захотите убедиться, что request.Form ["username"] не пусто, и вы не всегда отправляете LIKE '%'

2 голосов
/ 12 марта 2012

Используйте Request.QueryString["term"] вместо Request.Form["username"].

Это основано на документации по http://jqueryui.com/demos/autocomplete/. Ищите строку "term" в кавычках на этой странице.

1 голос
/ 12 марта 2012

Вот некоторые мысли:

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