当来自Web服务的数据时,如何在jquery自动完成中获取键值

时间:2012-07-14 00:31:01

标签: jquery asp.net json web-services jquery-autocomplete

我的自动完成工作正常,因为我可以选择文本。但问题是我想获得所选项目的键值(Id)。所以我可以设置隐藏字段并使用服务器端。

这是我的网络方法代码:

[WebMethod]
    public List<string> AuotExtenderHotel(string hotelname)
    {
        DataSet ds = objHotelList.GetHotels(hotelname);
        List<string> result = new List<string>();
        foreach (DataRow dr in ds.Tables[0].Rows)
        {
            result.Add(dr["HotelName"].ToString());
        }
        return result;
    }

这是我的jquery自动完成代码

<script type="text/javascript">
    $(document).ready(function () { HotelText(); });
    function HotelText() {
        $(".txthotel").autocomplete({
            source: function (request, response) {
                $.ajax({
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    url: "WebService.asmx/AuotExtenderHotel",
                    data: "{'hotelname':'" + $('.txthotel').val() + "'}",
                    dataType: "json",
                    success: function (data) {

                        response(data.d);


                    },
                    error: function (result) {
                        alert("Error");
                    }


                });
            }
        });
    } 
</script>

2 个答案:

答案 0 :(得分:1)

如果您的服务器没有返回除字符串数组以外的任何内容,您如何期望该项目的ID?我会修改Web方法以返回包含ID和值对的对象的JSON对象。像

[{ "id": "1", "label": "MyFirstHotel", "value": "MyFirstHotel" },{ "id": "2", "label": "MySecondHotel", "value": "MySecondHotel" }]

答案 1 :(得分:0)

我真的希望现在已经弄明白了,但以防万一......

文档说明选择一个项目时会激活“select”事件并将原型设为select: function(event, ui) { ... }

在函数中放置一个console.log(ui)会将ui Object显示为:

{
  item :
  {
    label : "the selected label",
    value : "the selected value"
  }
}