http://loopj.com/jquery-tokeninput/を使用してトークンを追加するChrome拡張機能を作成しています。前の質問を参照してください。
tokenInputで処理するためにサーバーから結果を取得する方法について混乱しています。次の記事、JSONPとは何ですか?、クロスドメインjsonpを機能させるには、コールバッククエリパラメータを追加する必要があることを示しています。
$(function() {
$("#token").tokenInput("http://localhost/token/search?callback=jsonprocess", {
preventDuplicates: true,
crossDomain: true,
});
});
これは、私のphpコードで応答をラップするために使用されます。
header('Content-type: text/javascript');
echo $this->request->query('callback') . '(' . json_encode($token_array) . ')';
exit;
次にjsonprocess()
、JavaScriptのメソッドを呼び出します。ただし、これはtokenInputインスタンスのコンテキスト外であるため、結果を入力できません。これは正しい機能ですか?または、jQueryトークン入力プラグインにjsonpを直接処理させる方法はありますか?
tokeninputの成功コールバック:
ajax_params.success = function(results) {
cache.add(cache_key, $(input).data("settings").jsonContainer ? results[$(input).data("settings").jsonContainer] : results);
if($.isFunction($(input).data("settings").onResult)) {
results = $(input).data("settings").onResult.call(hidden_input, results);
}
};
...呼び出されることはありません。