我正在使用一个名为“Jquery-ui-multisearch”的插件,它根据您提供的数组或外部源(ajax/api/等)在输入元素中提供自动完成功能。在这里找到:http://bseth99.github.io/jquery-ui-multisearch/index.html
我目前正在尝试使用该插件根据从 ajax 数据库调用返回的字符串数组提供自动完成建议,但我无法弄清楚该插件希望以何种格式显示。
这里是插件的初始化示例。
$(function() {
$("#myMultiSearch").multisearch({
source: function ( term, callback ) { ... } //A function can implement a data search and should call the passed in callback with the results.
});
});
下面是我的代码:
$("#search").multisearch({
source: function (term, callback) {
$.ajax({
type: 'POST',
url: postUrl,
data: {searchterm:term},
})
.done(function(data) { //data == ["abc","abcd","abcde"];
callback(data);
});
});
看起来与他们在这里所做的相似:http://bseth99.github.io/jquery-ui-multisearch/examples/movies.html - 看起来像这样:
source: function( term, callback ) {
movies.search( term ).done( function() { callback( movies.toJSON() ); } );
},
我也试过 callback(data.toJSON());或将输出数据更改为 {"abc","abcd","abcde"} 或 ("abc","abcd","abcde") 等。所有这些都会导致未定义的结果或出现一个框没有任何结果。
那么如何将返回的项目数组传递给 multisearch 函数,以便它可以在结果中显示它?
如果我需要更具体地沟通,请告诉我 - 我知道当提问者不是很清楚时很难诊断问题,尤其是在第三方插件上。
最佳答案
我上个月在 github 上作为一个问题发布了这个问题,作者在这里回复了我:https://github.com/bseth99/jquery-ui-multisearch/issues/2
我不得不从 php 中获取数组并从中创建一个新的哈希数组。这是我的代码。
.done(function(data) {
var jsonparse = JSON.parse(data);
var hashArray = [];
jsonparse.forEach(function(entry) {
hashArray.unshift({name: entry});
});
//console.log(hashArray);
callback(hashArray); //Same format as the line below.
//callback([{ name: "item1" },{ name: "item2" }]); //This works.
})
谢谢大家的帮助!
关于javascript - 这个插件要求回调字符串是什么格式? (jquery-ui-multisearch),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34277406/