我正在创建一个 chrome 扩展,它使用http://loopj.com/jquery-tokeninput/添加令牌,请参阅上一个问题。
我对如何从我的服务器获取结果以由 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 tokeninput 插件直接处理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);
}
};
...从未被调用。