Ich versuche, eine automatische Vervollständigung mit Ajax in MVC5 zu schreiben, aber egal, was ich versuche, bekomme ich den Fehler ungültige JSON primitive. Wenn ich die URL manuell eingeben localhost: 5088/GetData? Inpt = [Abfrage] Ich bin in der Lage, die Rückkehr json zu sehen.MVC 5 ungültige JSON-Primitive
Von dem, was ich online verstehe, gebe ich den Parameter "data:" falsch. Ich habe versucht, sie hineinzulegen. "" Aber es hat nicht funktioniert.
Mein Controller:
public JsonResult GetData(string inpt)
{
try
{
var node = //some values here , cause its too long I deleted it
foreach (var node in q)
{
string scity = node.Attribute("CityName").Value.ToUpper(new CultureInfo("tr-TR", false));
string ccity = node.Attribute("CityCode").Value;
string ccode = node.Attribute("CountryCode").Value;
if (ccity != oldcity)
{
result.Add(new HavaAlani { SehirAdi = scity, HavaAlaniKodu = ccity, HavaAlaniAdi = scity + ", " + ccode, Sehirmi = true });
oldcity = ccity;
}
result.Add(new HavaAlani { SehirAdi = scity, HavaAlaniKodu = node.Attribute("Code").Value, HavaAlaniAdi = node.Value, Sehirmi = false });
}
}
catch
{
}
return Json(result, JsonRequestBehavior.AllowGet);
}
}
Mein JS:
$('input.suggestBox').each(function() {
//$(this).jsonSuggest(air.Lines);
$(this).autocomplete({
source: function (request, response) {
$.ajax({
url: "dataAl/GetData",
data: { inpt: request.term },
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
dataFilter: function (data) { return data; },
success: function (data) {
response($.map(data.d, function (item) {
return {
code: item.HavaAlaniKodu,
value: item.HavaAlaniAdi,
iscity: item.Sehirmi
}
}))
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(XMLHttpRequest.responseText);
}
});
},
minLength: 2
}).data("ui-autocomplete")._renderItem = function (ul, item) {
var cls = "airport";
if (item.iscity)
cls = "city";
return $("<li></li>")
.data("item.autocomplete", item)
.append("<span class='span-" + cls + "'></span>")
.append("<a class='ui-autocomplete-" + cls + "'>" + item.value + " (" + item.code + ")" + "</a>")
.appendTo(ul);
};
});
Können Sie ein Beispiel für die zurückgegebene JSON-Datei posten? –
Es gibt JSOn nicht zurück, es gibt Warnung "ungültiges JSOn primitiv: inpt." Aber es gibt den Fehler im HTML-Format innerhalb des Title-Tags des Kopfes –
hmm ... Das ist seltsam, ich dachte, dass dieser bestimmte Fehler mit jquery, nicht MVC entstanden ist. Wenn Sie einen Unterbrechungspunkt in diese Aktion einfügen, scheint dieser Vorgang abgeschlossen zu sein. Wenn nicht, können Sie auch anzeigen, wo das Ergebnis deklariert ist. Versuchen Sie auch, DataType in "Text JSON" oder "Text/JSON" zu ändern –