如何在自动完成c#mvc中解析对象的json数组

时间:2014-02-28 15:40:12

标签: c# jquery asp.net-mvc json

我有一个自动完成方法。

$("#txtSearch").autocomplete({

                  source: function (request, response) {
                      $.ajax({
                          url: "/Home/Getsrchresult",
                          type: "POST",
                          dataType: "json",
                          data: { term: request.term, location: $('#location').val() },
                          success: function (data) {
                              response($.map(data, function (item) {
                                  return {


                                   label: item.srchresult, value: item.srchresult
                                    };
                              }))

                          }
                      })
                  }
              });

我的控制器传递多维数组。如何将所有数据放在自动完成文本框

控制器

                var fd2 = (from r in db.Restaurants
                       where r.restname.ToLower().Contains(term.ToLower())
                       orderby r.state == location descending
                       select new { searchresult = r.restname ,place=r.place


                       }).Take(10);
  return Json(fd2, JsonRequestBehavior.AllowGet);

响应是这样的

[{"srchresult":"foodtakeaway","place":"karnataka"},{"srchresult":"ssdf","place":"dfsaf"}]

1 个答案:

答案 0 :(得分:1)

这应该有效

$("#txtSearch").autocomplete({
     source: function (request, response) {                  
               $.ajax({
                    url: "/Home/Getsrchresult",
                    type: "POST",
                    dataType: "json",      
                    data: { term: request.term,location:$('#location').val() },
                    success: function (data) {
                        response($.map(data, function (item) {                   
                            return { label: item.place, value: item.place };
                        }))
                    }
                })
            }  
});

假设您正在返回这样的JSON

[
    {
        "srchresult": "foodtakeaway",
        "place": "karnataka"
    },
    {
        "srchresult": "ssdf",
        "place": "dfsaf"
    }
]

我已将item.place用于label和value属性,您可以根据需要将其替换为item.srchresult

建议: 使用MVC帮助程序方法(Url.Action)生成操作方法的网址,而不是硬编码