Я создаю расширение 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); } };
… никогда не называется.