sql >> Databáze >  >> RDS >> Mysql

Automatické dokončování Jquery a PHP:vyplnění vstupního pole daty z databáze mySQL na základě vybrané možnosti v poli automatického doplňování

Postavil jsem přesně tuto funkci do mé aplikace. Je zde další vrstva složitosti v tom, že existují dvě vyhledávání předměstí (adresa domova a práce), z nichž každé vyplňuje odpovídající pole státu a PSČ. Back-end je spíše perl než PHP, ale to není relevantní pro manipulaci na straně klienta. Nakonec back-end vrací strukturu JSON s polem hashů, jako je toto:

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

Klíč ID obsahuje název předměstí a klíč hodnoty obsahuje řetězce jako „JOLIET IL 60403“, takže správná sada dat se vybere jednou, čímž se vyřeší problém více měst/předměstí se stejným názvem na různých místech a provede se zpětná volání, aby se to vyřešilo.

Po výběru jsou hodnoty předměstí (id), stavu a pcode vloženy do odpovídajících parametrů.

Následující kód také ukládá do mezipaměti předchozí výsledky (a mezipaměť je sdílena mezi domácím a pracovním vyhledáváním).

$('#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. Sqlite Android Raw Query INSERT INTO nefunguje

  2. ADDDATE() vs DATE_ADD() v MySQL:Jaký je rozdíl?

  3. Metoda upgradu není volána v android sqlite

  4. Jak spravovat uživatele a autentizaci v MySQL