Как отмечено @ JuicyScripter в комментарии выше ...
"API Викимедиа, который используется в Википедии, поддерживает аргумент обратного вызова JSONP."
Это означает, что вы можете добавить обратный вызов к запросу ...
var url = "http://en.wikipedia.org/w/api.php?action=query&prop=info|revisions&intoken=edit&titles=Main%20Page&format=json&callback=my_callback";
Обратите внимание, что в конце я добавил &callback=my_callback
.Что произойдет, это то, что вместо отправки ответа в формате JSON, например ...
{
query: {
pages: {
15580374: {
...
}
}
}
}
... теперь он будет заключен в вызов функции.Это будет действительный JavaScript, поэтому ваш запрос script
выполнит функцию и передаст данные.
my_callback({
query: {
pages: {
15580374: {
...
}
}
}
});
Так что все, что вам нужно, это функция обратного вызова, имя которой совпадает с именем, которое вы дали в функциизапрос ...
function my_callback( data ) {
console.log( data );
}
Убедитесь, что эта функция доступна глобально.
Затем избавьтесь от строки onload
, и ваш код должен просто работать ...
var url = "http://en.wikipedia.org/w/api.php?action=query&prop=info|revisions&intoken=edit&titles=Main%20Page&format=json&callback=my_callback";
var script = document.createElement('script');
script.src = url;
document.body.appendChild(script);
Когда скрипт прибудет и запустится, он вызовет вашу функцию, передав ей запрошенные данные.