jquery ui autocomplete只返回一个值

时间:2011-03-02 22:59:42

标签: jquery jquery-ui jquery-ui-autocomplete

我在自动完成时遇到问题,因为它只返回一条记录,而远程网络服务则返回10项。

想知道你是否可以查看我的代码,看看我做错了什么?

收到的数据:

  

{ “d”: “[\” 02102008633 \ “\ ”02102008794 \“,\ ”02102008980 \“,\ ”02102015321 \“,\ ”02102018743 \“,\ ”02102024602 \“,\” 02102037454 \ “\ ”02102038366 \“,\ ”02102040774 \“,\ ”02102056369 \“]”}

jQuery(txtDestination).autocomplete({
            minLength: 2,
            source: function (request, response) {
                jQuery.ajax({
                    url: "/SearchService.asmx/GetDestinationAutocompleteValue?" + "accountCode=" + accountCode.toString() + "&criteria=" + jQuery(txtDestination).val().toString(),
                    data: "{}",
                    type: "GET",
                    contentType: "application/json; charset=utf-8",
                    success: function (data) {
                        if (data != null && data.hasOwnProperty('d') && eval(data.d) != null) {
                            var result = new Array(eval(data.d));
                            response(jQuery.map(result, function (item, ctr) {
                                return { label: item[ctr], id: item[ctr], value: item[ctr] }
                            }));
                        }
                    },
                    error: function (XMLHttpRequest, textStatus, errorThrown) { alert(textStatus + " " + errorThrown); }
                });
            }
        });

万分感谢!

干杯, 安

1 个答案:

答案 0 :(得分:1)

我想我找到了......看看这一行:

var result = new Array(eval(data.d));

现在,由于eval(data.d)已经计算出一个数组,你实际上是在调用这样的东西:

var result = new Array([1, 2, 3]);

实际上会创建一个长度为1的数组 - 其中第一个元素是长度为3的数组。这也让我蒙羞,直到我想在JS控制台中检查它(并且不要让我开始打印输出而不包括方括号......):

js> ra1 = new Array(1, 2, 3)
1,2,3
js> ra2 = new Array([1, 2, 3])
1,2,3
js> ra1.length
3
js> ra2.length
1

但好消息是有一个简单的解决方法:

var result = eval(data.d);

希望这有帮助!