0

我有一个自动完成代码如下

   $("#city").autocomplete({

    source: function( request, response ) {
        term=request.term;
        $.ajax({
            url: "/autocomplete/city/"+term,
            dataType: "html",
            async:false,
            cache:true,
            success: function (data) {
                alert(data);
                response(data);
            }

        });                 
    }
});

警报数据会产生正确的数据。以德里加尔各答等形式。但是 response(data) 将数据显示为 d e l h i 不同行中的所有字符

任何人都可以解释错误或正确的做法吗?

4

1 回答 1

1

我假设您使用的是旧版本的 jquery (<= 1.7)?如果是的话,你会以这种方式得到它,你需要将数组传递给response. 较新版本的 jquery 将在for..in用于迭代时抛出错误,我猜旧版本使用 for 循环进行迭代,就好像您已将字符串作为数组传递一样,您的字符串会被拆分为字符,因此会出现这种行为。

尝试这个:

success: function( data ) {

    response( [data]);
}

但是,如果您的数据是由逗号分隔的多个值的字符串,您可以这样做:

success: function( data ) {

    response(data.split(','));
}

看看这个说明如何正确使用它的文档。和一个示例小提琴来演示。

于 2013-06-26T19:26:55.793 回答