jQuery автозаполнение формы с SQL? - PullRequest
0 голосов
/ 25 марта 2012

Мне было интересно, смогу ли я создать автозаполнение формы с помощью jQuery и SQL, возможно, с помощью функции jQuery .change() и SQL SELECT * FROM table WHERE name LIKE '%$q%'. Может ли это быть возможно?

Ответы [ 2 ]

0 голосов
/ 25 марта 2012

Если вы пытаетесь просто привязать текстовые поля и отображать автозаполнение при изменении их значения, то должно работать следующее:

//Javascript
$("#txtSearchValue").autocomplete({
    source: function (request, response) {
        var regex = RegExp('[^a-z0-9\\&\\s]', 'gi');
        var obj = {
            searchValue: request.term.replace(regex, '')
        };

        $.ajax({
            type: "POST"
            , contentType: "application/json; charset=utf-8"
            , url: "AutoComplete.asmx/QueryList"
            , data: JSON.stringify(obj)
            , dataType: "json"
            , async: true
            , success: function (data) {
                response(data.d);
            }
            , error: function (request, status, error) {
                var err = jQuery.parseJSON(request.responseText);
                alert(err.Message);
            }
        });
    }
    , minLength: 2
});


//Auto-Complete on the server (code using C#)
[WebMethod]
[System.Web.Script.Services.ScriptMethod]
public string[] QueryList(string searchValue) 
{
    string sqlSelect = @"select column_name 
                         from table
                         where column_name like '%' + @target + '%'";
    using(SqlConnection conn = new SqlConnection(WebConfigurationManager.ConnectionStrings["connString"].ConnectionString))
    {
        using(SqlDataAdapter da = new SqlDataAdapter(sqlSelect, conn))
        {
            da.SelectCommand.Parameters.AddWithValue("@target", searchValue);
            DataTable dt = new DataTable();
            conn.Open();
            da.Fill(dt);

            string[] results = new string[dt.Rows.Count];
            for (int i=0; i<results.Length; i++) 
            {
                results[i] = dt.Rows[i]["column_name"].ToString();
            }

            return results;
        }
    }
}
0 голосов
/ 25 марта 2012

Концептуально это возможно, но jQuery не может напрямую обращаться к базе данных SQL. Поэтому этот знак доллара в '%$q%' не имеет смысла для меня. Кроме того, поскольку вы, вероятно, будете искать слова, начинающиеся с того, что ввели пользователь, ваше выражение LIKE должно иметь только «%» в конце, а не то, что в начале.

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