How to Map data in jquery-ui-autocomplete funktioniert nicht
ich bin mit den jquery-ui-autocomplete und macht einen ajax-Aufruf innerhalb der autocomplete-Funktion rufe ich meine controller-action gibt Json , aber Vorschläge, die nicht angezeigt wird im dropdown -
Javascript
function log(message) {
$("<div>").text(message).prependTo("#log");
$("#log").scrollTop(0);
}
$("#search").autocomplete({
source: function (request, response) {
$.ajax({
url: "/Home/GetCompanyNames",
dataType: "jsonp",
data: "searchterm=" + request.term,
success: function (data) {
response($.map(data, function (item) {
alert(item.Value);
return {
label: item.Name,
value: item.Name
};
}));
}
});
},
minLength: 2,
select: function (event, ui) {
log(ui.item ?
"Selected: " + ui.item.label :
"Nothing selected, input was " + this.value);
},
open: function () {
$(this).removeClass("ui-corner-all").addClass("ui-corner-top");
},
close: function () {
$(this).removeClass("ui-corner-top").addClass("ui-corner-all");
}
});
});
Action im Controller :
public JsonResult GetCompanyNames (string searchterm)
{
var companies = context.companyService.Query().Where(x => x.Name.Contains(searchterm)).ToList();
var list = companies.Select(item => new SearchJsonModel
{
LogoUrl = item.Logo != null || item.Logo != "" ? "<img src='/Upload/" + item.Logo + "' />" : "<img src='/home/image?image=" + item.Name + "' />", Name = item.Name, Value = item.InternetName
}).Select(model => (model)).ToList();
return Json(list, JsonRequestBehavior.AllowGet);
}
SearchJsonModel :
public class SearchJsonModel
{
public string Name { get; set; }
public string Value { get; set; }
public string LogoUrl { get; set; }
}
und das ist, was ich bin immer in der Antwort des ajax-Aufrufs ( dies ist das Bild von firebug )
Bitte Fragen Sie mich wenn Sie mehr detail und vielen Dank im Voraus .
Bearbeiten
jetzt versuche ich den Zugriff auf ausgewählte Wert in select-callback-aber seine Angabe Undefined
select: function (event, ui) {
alert(ui.item.Name);
alert(ui.item.Value);
alert(ui.item.LogoUrl);
},
InformationsquelleAutor smart boy | 2012-10-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie haben festgelegt, Ihre
dataType
alsjsonp
aber wie es aussieht sind Sie wieder, die standardjson
, versuchen Sie IhrdataType
:und was ist der Unterschied zwischen
Json
undJsonp
?Ich glaube, dass die Wikipedia erklärt es gut genug: JSONP, JSON
überprüfen Sie meine edit ich habe noch eine Frage
Dies ist ein wenig komplizierter, als der eigentliche Artikel aus deiner Antwort ist nicht zu halten, durch AutoVervollständigen. Um das zu erreichen, müssen Sie überschreiben die internen
_renderItem
Funktion. Bitte Lesen Sie folgende Antwort ein Beispiel: stackoverflow.com/questions/12855617/... (vergessen Sie nicht, upvote mit dem Pfeil nach oben auf der linken Seite, wenn die Antwort hilft dir).InformationsquelleAutor tpeczek
im nicht sicher, was falsch ist in ur-code, kann aber u kann versuchen eine weitere, einfache Möglichkeit, das zu tun AutoVervollständigen? Wie
html wie
InformationsquelleAutor maxs87