我正在使用 jQuery UI 自动完成来显示文本输入字段的建议。 建议存储在名为“建议”的 Javascript 数组中。
我正在尝试从数据库中获取建议数组的字符串值,但无法将 List 对象转换为 Javascript 数组。
Javascript:
var suggestions = [];
$.get('/mywebapp/autocompleteplayer.html', function(data){
parsed = JSON.parse(data);
suggestions = parsed.split(",");
}, "json");
$('#autocompleted').autocomplete({
data: suggestions,
minLength: 3
});
Spring MVC Controller :
@Controller
public class AutocompletePlayerController {
@RequestMapping(value = "/autocompleteplayer")
public List<String> getPlayerSuggestions(){
List<String> myList;
//code that fills myList with all of the players' full names from the database, omitted for brevity
return myList;
}
}
我知道我没有正确解析 AJAX 响应,因为我已经从浏览器控制台检查了建议数组有 0 个元素。谁能帮我?我在这里做错了什么?
最佳答案
您需要在 js 中像这样使用它(数据是响应实体,而不是数据 - 它位于 data.data
中):
$.get('/mywebapp/autocompleteplayer', function(data){
suggestions = data.data;
$('#autocompleted').autocomplete({ // not sure how to use your plugin
data: suggestions,
minLength: 3
});
}, "json");
并在您的 Spring Controller 中添加 @ResponseBody
注释
@RequestMapping(value = "/autocompleteplayer")
@ResponseBody
public List<String> getPlayerSuggestions(){
List<String> myList;
//code that fills myList with all of the players' full names from the database, omitted for brevity
return myList;
}
不需要JSON.parse
任何东西,jquery 已经做到了这一点。
/mywebapp/autocompleteplayer.html
听起来也是错误的。路线是 autocompleteplayer
没有 .html
。
除此之外,建议是异步创建的。因此,自动完成中的数据将始终为空。我自己没有使用该插件,因此可能有数据更新函数,否则请尝试将其放入 $.get()
函数回调中。
关于javascript - 将 Java List<String> 转换为 Javascript 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45196859/