0

我想从 URL 获取 JSON 响应并将其用作自动完成功能,但我不明白如何接收该 JSON 数组。
我想把响应放到一个 jQuery 插件上。

$('#tags').tagsInput({    
  autocomplete_url:'http://myserver.com/api/autocomplete',
  autocomplete:{selectFirst:true,width:'100px',autoFill:true}
});

我将用作 url 的 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]
    }

现在我希望将该 url 响应分配给autocomplete_url. 虽然当我使用工作正常的手动数组时:

$('#tags').tagsInput({    
  autocomplete_url:myJsonArray,
  autocomplete:{selectFirst:true,width:'100px',autoFill:true}
});
4

1 回答 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
}
于 2013-11-11T10:46:45.533 回答