jQuery UI Autocomplete JSON-gibt error: Uncaught TypeError: Cannot use 'in' - operator die Suche nach '62' in
Bin ich mit viel Mühe AutoVervollständigen arbeiten auf meiner Seite. Wenn ich 2 eingeben von Zeichen ("OW") in meiner Suche-Eingang, bekomme ich den preloader Bild (siehe unten), aber es geht nie Weg und ich habe nie die autocomplete popup. Auf der Suche, auf der Konsole in Chrome zeigt:
Uncaught TypeError: Cannot use 'in' operator to search for '62' in [{"value":103,"label":"FLOWER"},{"value":105,"label":"YELLOW"}]
Hier ist der eigentliche string, der zurückgegeben wird (bestätigt durch hinzufügen der alert(data) in den Erfolg-block):
[{"kwrdID":103,"kwrdKeyWord":"FLOWER"},{"kwrdID":105,"kwrdKeyWord":"YELLOW"}]
Ist hier der wichtigste code für die autocomplete
$("#searchInput").autocomplete({
source: function (request, response) {
$.ajax({
url: '@Url.Action("GetKeywords", "Home")',
dataType: "json",
data: {
SearchTerm: request.term
},
success: function (data) {
response($.map(data.keywords, function (item) {
return {
label: item.kwrdKeyWord,
value: item.kwrdID
}
}));
}
});
},
minLength: 2
});
Und schließlich, hier ist der preloader (nur im Fall, dass es-bezogen).
$(document).ajaxStart(function () {
var position = $('#divParent').position();
position.left += (($('#divParent').width() / 2) - ($('#preloader').width() / 2));
position.top += (($('#divParent').height() / 2) - ($('#preloader').height() / 2));
$('#preloader').css(position).show();
$('#preloader').show();
}).ajaxStop(function () {
$('#preloader').hide();
});
Kann mir jemand helfen zu erklären, was hier Los ist?
Du musst angemeldet sein, um einen Kommentar abzugeben.
War es ein langer Weg, aber nach vielen Stunden des Experimentierens, ich kam mit diesem code:
Dies scheint gut zu funktionieren. Die Wahrheit ist, meine keywords sind einzigartig, so dass ich Leben kann ohne die ID sowieso.
JSON.parse
nennen.ein wenig Hilfe, die nützlich sein können:
wenn Sie der Verwendung von json, könnte es sein, dass die "json-Objekt" nicht analysiert, oder Sie haben überschrieben, die variable mit anderen Einstellungen (wie das, was ich habe dummerweise vor kurzem).
für das erste problem, werden Sie sicher, dass Ihr server weiß, "application/json" MIME-Typ, sonst mit header (für PHP)
Ich meine, in PHP, verwenden Sie diese vor allem:
<cfcontent type="text/json">
an der Spitze von meinem script gelöst das Problem sofort.hier, wie Sie die Funktion für die source-Eigenschaft
Die Antwort-Funktion akzeptiert array von JSON-Objekten
anstelle des Schreibens ersetzen
data.keywords
mitJSON.parse(data)
bei dieser Linie :response($.map(data.keywords, function (item) {
.BR,
Hazem