Автозаполнение с плагином JQuery

0

Я хочу получить ответ 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}
});
Теги:
grails

1 ответ

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
    Спасибо, приятель, я придерживался того же подхода.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню