我正在尝试用MVC5中的ajax编写自动完成,但无论我尝试什么,我都会得到错误无效的JSON原语。 当我手动输入url localhost:5088 / GetData?inpt = [query]我能看到返回json。
根据我的在线理解,我给出了“data:”参数错误。我尝试将它们放入“”但它没有用。
我的控制器:
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);
}
}
我的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);
};
});
答案 0 :(得分:16)
评论有点长,所以将其添加为答案 -
首先要尝试修改每篇帖子的内容类型: MVC JSON method returning invalid JSON to JQuery?
尝试&#34; application / json&#34;。
还将您的数据对象包装在
中 JSON.stringify()
如果这不起作用,你可以告诉我你的行动结果在哪里 - 我没有看到声明。还要添加断点并确保您可以进入该方法。