Mysql
 sql >> база данни >  >> RDS >> Mysql

Jquery autocomplete и PHP:попълване на поле за въвеждане с данни от mySQL база данни въз основа на избраната опция в полето за автоматично довършване

Построих точно тази функция в мое приложение. Тук има допълнителен слой на сложност, тъй като има две търсения в предградията (домашен и служебен адрес), като всяко попълва съответстващи полета за състояние и пощенски код. Бекендът е perl, а не PHP, но това не е от значение за обработката от страна на клиента. В крайна сметка задната част връща JSON структура с масив от хешове като този:

[ { "id":"...", "value":"...", "state":"...", "pcode":"..." }, ... ]

Идентификационният ключ съдържа името на предградието, а ключът за стойност съдържа низове като „JOLIET IL 60403“, така че правилният набор от данни се избира веднъж, като се решава проблемът с множество градове/предградия с едно и също име на различни места и се правят обратни повиквания, за да се реши това.

След като бъдат избрани, стойностите на предградието (id), състояние и pcode се инжектират в съответстващите параметри.

Следният код също кешира предишни резултати (и кешът се споделя между домашното и служебното търсене).

$('#hm_suburb').addClass('suburb_search').attr(
         {suburb: '#hm_suburb', pcode: '#hm_pcode', state: '#hm_state'});
$('#wk_suburb').addClass('suburb_search').attr(
         {suburb: '#wk_suburb', pcode: '#wk_pcode', state: '#wk_state'});
var sub_cache = {};
$(".suburb_search").autocomplete({
    source: function(request, response) {
        if (request.term in sub_cache) {
                response($.map(sub_cache[request.term], function(item) {
                    return { value: item.value, id: item.id,
                             state: item.state, pcode: item.pcode }
                }))
            return;
        }
        $.ajax({
            url: suburb_url,
            data: "term=" + request.term,
            dataType: "json",
            type: "GET",
            contentType: "application/json; charset=utf-8",
            dataFilter: function(data) { return data; },
            success: function(data) {
                sub_cache[request.term] = data;
                response($.map(data, function(item) {
                    return {
                        value: item.value,
                        id: item.id,
                        state: item.state,
                        pcode: item.pcode
                    }
                }))
            } //,
            //error: HandleAjaxError  // custom method
        });
    },
    minLength: 3,
    select: function(event, ui) {
        if (ui.item) {
            $this = $(this);
            //alert("this suburb field = " + $this.attr('suburb'));
            $($this.attr('suburb')).val(ui.item.id);
            $($this.attr('pcode')).val(ui.item.pcode);
            $($this.attr('state')).val(ui.item.state);
            event.preventDefault();
        }
    }
});


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Запазете данните офлайн преди публикуване

  2. Как да прехвърля моята MySQL база данни на друг компютър?

  3. Как да репликирате MySQL база данни на друг сървър

  4. 'PDOException' Синтактична грешка или нарушение на достъпа:1064 Имате грешка във вашия SQL синтаксис; проверете

  5. Размер за съхранение на IPv4, IPv6 адреси като низ