我想从URL获取JSON响应并将其用作自动完成功能,但我无法理解如何接收该JSON数组。 我想把响应放到jQuery插件上。
$('#tags').tagsInput({
autocomplete_url:'http://myserver.com/api/autocomplete',
autocomplete:{selectFirst:true,width:'100px',autoFill:true}
});
我的grails动作将用作网址:
def getCategories() {
def categories=Categories.executeQuery("select name from Categories where name like '%"+params.term+"%'",[max:10]);
JSONArray catArray = new JSONArray(categories);
render model:[catArray:catArray]
}
现在我希望将该网址响应分配给autocomplete_url
。
虽然当我使用手动数组工作正常时:
$('#tags').tagsInput({
autocomplete_url:myJsonArray,
autocomplete:{selectFirst:true,width:'100px',autoFill:true}
});
答案 0 :(得分:1)
在不知道JQuery插件名称的情况下,我假设autocomplete_url可以是url或JSON。如果要直接设置JSON,则需要在一个操作中执行此操作:
动作
def show() {
...
def categories=Categories.executeQuery("select name from Categories where name like '%"+params.term+"%'",[max:10]);
String jsonCateg = categories as JSON //transforms your query result to array.
render view: 'show', model: [domainInstance: domainInstance, jsonCateg: jsonCateg]
...
}
视图
$('#tags').tagsInput({
autocomplete_url:${jsonCateg},
autocomplete:{selectFirst:true,width:'100px',autoFill:true}
});
如果您要设置操作的网址,请使用createLink标记:
$('#tags').tagsInput({
autocomplete_url: '${createLink(controller: "myController", action:"getCategories")}',
autocomplete:{selectFirst:true,width:'100px',autoFill:true}
});
控制器操作应直接呈现JSON:
def getCategories() {
def categories=Categories.executeQuery("select name from Categories where name like '%"+params.term+"%'",[max:10]);
render categories as JSON
}