2013-11-11 5 views
0

Я хочу получить ответ JSON от URL-адреса и использовать его как функцию автозаполнения, но я не мог понять, как получить этот массив JSON.
Я хочу поставить ответ на плагин jQuery.Autocomplete с плагином 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} 
}); 

ответ

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} 
}); 

Если вы хотите установить 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 
} 
+0

Спасибо приятель, я следовал один и тот же подход. –

Смежные вопросы