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 を直接設定する場合は、1 つのアクションで行う必要があります。

アクション

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 に答える