1

オートコンプリート ボックスにキーを入力すると、MVC コントローラーからキーと値のペアが JSON 形式で返されます。

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"}] です。

ビューで私はこれを取得しています

ここに画像の説明を入力

jクエリは

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

私の質問は、この返された json をどのように解析するのですか? 期待される出力は ここに画像の説明を入力

4

2 に答える 2

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
                        };

                    }))
                }
            });
        }
    });
于 2013-06-28T13:34:39.713 に答える
0

dataSet を 2 回シリアライズしようとしています。あなたが使用する必要があります

return Json(jsonString, JsonRequestBehavior.AllowGet);

なし (!) jSerializer。

または、シリアライザでこれを行いたい場合は、シリアライズされたデータセットのコンテンツだけを返してみてください

jsonString += jSearializer.Serialize(userList);
return Content(jsonString);
于 2013-06-27T14:47:19.367 に答える