Я хочу получить ответ JSON от URL-адреса и использовать его как функцию автозаполнения, но я не мог понять, как получить этот массив JSON.
Я хочу поставить ответ на плагин jQuery.
$('#tags').tagsInput({
autocomplete_url:'http://myserver.com/api/autocomplete',
autocomplete:{selectFirst:true,width:'100px',autoFill:true}
});
мое действие grails, которое будет использоваться как url:
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]
}
Теперь я хочу, чтобы ответ URL был присвоен autocomplete_url
. Хотя, когда я использую ручной массив, который отлично работает:
$('#tags').tagsInput({
autocomplete_url:myJsonArray,
autocomplete:{selectFirst:true,width:'100px',autoFill:true}
});
Не зная имя плагина 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}
});
Если вы хотите установить URL-адрес своего действия, используйте тег 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
}