使用JQuery插件自动完成

时间:2013-11-11 08:04:48

标签: jquery json grails

我想从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}
});

1 个答案:

答案 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
}