Я использую аддон Firefox.Запуск этого кода ошибки с «обратный вызов не определен»
function callback(data) { window.alert(data.status); } $.ajax({ url: "http://apps.compete.com/sites/google.com/trended/rank/?apikey=210e634a0b3af972daa908a447c735c1&start_date=201112&end_date=201112&jsonp=?", dataType: "jsonp", jsonp: "jsonp", jsonpCallback: "callback" });
Это документация API: https://www.compete.com/developer/documentation/
Я предполагаю, что вы запускаете это из скрипта контента.Необходимо учитывать, что скрипты контента на самом деле не работают в том же контексте, что и скрипты веб-страницы - веб-страница не может видеть функции, определенные скриптами контента, и наоборот ( подробное описание этого механизма ).JSONP работает путем вставки тега <script> на веб-страницу.Этот сценарий будет выполняться в контексте веб-страницы - и он не увидит функцию обратного вызова, определенную вами в сценарии содержимого.
<script>
Чтобы определить функцию callback в контексте окна, выполните следующие действия:
callback
unsafeWindow.callback = function(data) { window.alert(data.status); };
Однако вы должны серьезно относиться к предупреждениям о unsafeWindow в документации и избегать их, если это возможно.Используйте request пакет в вашем добавочном номере для загрузки данных:
unsafeWindow
request
require("request").Request({ url: "http://apps.compete.com/sites/google.com/trended/rank/?apikey=210e634a0b3af972daa908a447c735c1&start_date=201112&end_date=201112", onComplete: function(response) { console.log(response.json); } });
Затем вы можете отправить response.json в ваш скрипт контента через обычные сообщения .
response.json
На самом деле, в ответ Марсело Диниз, и любой, кто пытается заставить работать API конкурирующих: Вам необходимо добавить &jsonp=? к вашему URL, иначе ваш ajax-запрос всегда будет неудачным.
&jsonp=?
Я боролся с этим какое-то время, потому что документы по соревнованиям были расплывчаты.
Не следует добавлять jsonp=? к вашему URL, это делается с помощью функции ajax.
jsonp=?
Только для использования:
url: "http://apps.compete.com/sites/google.com/trended/rank/?apikey=<your-api-key>&start_date=201112&end_date=201112",
Попробуйте это.
$.ajax({ url: "http://apps.compete.com/sites/google.com/trended/rank/?apikey=210e634a0b3af972daa908a447c735c1&start_date=201112&end_date=201112&jsonp=?", dataType: "jsonp", success: function(data) { window.alert(data.status); } });