5 Stimmen

JQuery-Autovervollständigung entfernte JSON-Datenquelle gibt keine Daten zurück

Ich habe ewig daran gearbeitet und alle anderen Beispiele durchgelesen, kann aber immer noch nicht herausfinden, wie ich das machen soll. Ich versuche, jQuery UI Autocomplete zu verwenden, zum ersten Mal versuche ich, das alles zusammenzustellen. Hier ist mein JS:

$(document).ready(function () {
$("#search-title").autocomplete({
    source: function ( request, response ) {
        $.ajax({
            url: "/include/autocomplete",
            dataType: "json",
            data: {
                        term: request.term      
                    },
            success: function (data) {
                response( $.map( data.stuff, function ( item ) {
                    return {
                        label: item.name,
                        value: item.name
                    };
                }));
            }
        });
    },
    minLength: 2,
    focus: function (event, ui) {
        $(event.target).val(ui.item.label);
        return false;
    },
    select: function (event, ui) {
        $(event.target).val(ui.item.label);
        window.location = ui.item.value;
        return false;
    }
});
});

Beim Anschauen der Antwort in Firebug denke ich, dass ich hier richtig formatiertes JSON bekomme:

{"stuff":[ {"label" : "Dragon", "value" : "http://site.com/animal/firebreathers"}] }

Aber aus irgendeinem Grund funktioniert es nicht. Nachdem ich die Mindestlänge erreicht habe, wird eine kleine leere Box unterhalb des Suchfelds geöffnet, aber es wird nichts darin sein.

UPDATE: Wenn ich "alert(item);" im Antwortaufruf hinzufüge, erhalte ich ein Fenster, das sagt "Die Seite bei site.com zeigt an: object Object" - könnte das das Problem sein?

2voto

Jim Hull Punkte 153

Ich habe es endlich herausgefunden, dank des Hinweises unter meinem Fragekommentar.

In der Rückgabe, die ich von der Jquery UI-Seite kopiert habe, hatte ich:

label: item.name,
value: item.name

Indem ich das geändert habe zu:

label: item.label,
value: item.value

hat mein Problem mit jQuery gelöst. Ich habe keine Ahnung, ob dies eine gute Praxis ist, aber es funktioniert endlich!

0voto

Deept Raghav Punkte 1419

Versuchen Sie jsonp anstelle von json im Datentyp zu verwenden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X