jQuery UI autocomplete IE problema

mai întâi codul meu

   $(function() {
        var suggest;
        $("#guestname").keyup(function() {

            $.ajax({
                async: true,
                url: '../include/searchGuest.php',
                dataType: 'json', 
                data: 'searchTxt=' + $(this).val() + '&festival_id=<?php echo $festival_id;?>', 
                success: function(data) {
                    suggest = data;
                    get_autocomplete(suggest);
                }   
            });
        });
    });


    function get_autocomplete(suggest) {
      $("#guestname").autocomplete({
        minLength: 3,
        source: suggest
      });
    }

Folosesc această funcție jQuery pentru a obține o listă de oaspeți. Utilizatorul completează un câmp de intrare cu un nume ca "John". Ajax caută o bază de date pentru oaspeți cu nume sau prenume care conține "John". În același script (PHP), creez un obiect JSON care arată ca "1234: John Doe", "...", "..."] (numărul este ID-ul acestui oaspete, vreau doar să menționez asta). Apoi, trec JSON-ul la funcția de completare automată a interfeței jQuery.

Totul funcționează bine în FF și Chrome, după obținerea unui rezultat sub forma unui JSON, o fereastră litte se deschide sub inputield și arată toate meciurile. În IE9 nu-i place să nu funcționeze la toate, dar niciodată nu am obține obiectul JSON complet ca rezultat. De asemenea, în majoritatea cazurilor trebuie să scriu aproape întregul nume pentru a obține un meci - "Sulliv" pentru a obține nume de ultimă generație precum "Sullivan". În FF este suficient să scrie "Sul".

În baza de date "Guest" sunt înregistrate aroung 8.1k. Nu pot IE să gestioneze un JSON atât de mare sau trebuie să-mi îmbunătățesc scenariul. Este o problemă comună cu IE și JSON sau jQuery?

1

1 răspunsuri

Ar trebui doar să inițializați widgetul de completare automată o dată și apoi să utilizați opțiunea source pentru a efectua filtrarea pe server:

$("#guestname").autocomplete({
    minLength: 3,
    source: function (request, response) {
        $.ajax({
            async: true,
            url: '../include/searchGuest.php',
            dataType: 'json', 
            data: 'searchTxt=' + request.term + '&festival_id=<?php echo $festival_id;?>', 
            success: function(data) {
                response(data)
            }   
        });        
    }
});
  • request.term is the term the user searched for.
  • response is the callback function you must call with autocomplete candidates.
0
adăugat
Atm folosesc evenimentul keyup în câmpul de introducere. Cu codul dvs. i dont a lua cum ar trebui să sun apel ajax.
adăugat autor Christian Timm, sursa
Întrebarea prostă este proastă. Uitați de unul de mai sus. Funcționează, dar problema mea cu IE încă mai există. Este ca și cum IE cant manipula JSON.
adăugat autor Christian Timm, sursa
E ciudat. Puteți să limitați rezultatele pe care le întoarceți de pe server și să vedeți dacă acestea apar încă?
adăugat autor Andrew Whitaker, sursa
JavaScript, România - Moldova
JavaScript, România - Moldova
328 participanți

Comunitatea Română JavaScript: github.com/js-ro Pentru confort, opriți notificările. Parteneri: @node_ro, @php_ro, @python_ro, @seo_ro, @RomaniaGroup, @ai_ro, @Grupuri_IT Offtop: @holywars_ro Joburi: @js_jobs_ro Sponsored with ❤️ by ciupacabra.com