在jquery自动完成中解析JSON

时间:2013-06-27 11:49:51

标签: jquery json asp.net-mvc-3 asp.net-mvc-4 jquery-autocomplete

在自动完成框中的键输入中,我以JSON格式从MVC控制器返回Key,Value对。

public ActionResult UserNameAutoComplete(string term)
{
    DBEntities db = new DBEntities();

    ...codes to get data from database 

    jsonString += jSearializer.Serialize(userList);
    return Json(jsonString, JsonRequestBehavior.AllowGet);
}

重新编写的Json字符串是[{“UserId”:“1”,“UserName”:“admin”},{“UserId”:“3”,“UserName”:“newtonsheikh”}]

在视图中我得到了这个

enter image description here

jquery是

$("#Username").autocomplete({
    source: '@Url.Action("UserNameAutoComplete")'
});

我的问题是如何解析这个返回的json?预期的产出是 enter image description here

2 个答案:

答案 0 :(得分:6)

解决了这个问题。我不得不改变我的jquery代码。无需更改返回json字符串的代码。

$("#Username").autocomplete({
        select: function (e, ui) {
            $("#Username").val(ui.item.label);
            return false;
        },

        source: function (request, response) {
            $.ajax({
                url: '@Url.Action("UserNameAutoComplete")',
                data: request,
                success: function (data) {
                    var ParsedObject = $.parseJSON(data);
                    response($.map(ParsedObject, function (item) {
                        return {
                            label: item.UserName,
                            value: item.UserId
                        };

                    }))
                }
            });
        }
    });

答案 1 :(得分:0)

您尝试将数据集序列化两次。 你需要使用

return Json(jsonString, JsonRequestBehavior.AllowGet);

没有(!)jSerializer。

或者如果您想使用序列化程序执行此操作,请尝试返回序列化数据集的内容

jsonString += jSearializer.Serialize(userList);
return Content(jsonString);