JSONP не работает на странице - PullRequest
1 голос
/ 27 июля 2011

У меня есть страница, где я использую wikipedia api. Но так как я не могу использовать JSON для междоменных ограничений, я использую JSONP. Мой код выглядит так

<body>
<script type="text/javascript">
function res(data){
  alert(data);
};
</script>
<script type="text/javascript" src="http://en.wikipedia.org/w/api.php?action=opensearch&search=api&callback=res&limit=10&namespace=0&format=jsonfm">
</script>
</body>

здесь я предоставляю функцию обратного вызова с именем res в URL. Как я увидел в firebug, ответ пришел как

<code><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>MediaWiki API Result</title>
</head>
<body>
<br />
<small>
You are looking at the HTML representation of the JSON format.<br />
HTML is good for debugging, but probably is not suitable for your application.<br />
See <a href='http://www.mediawiki.org/wiki/API'>complete documentation</a>, or
<a href='/w/api.php'>API help</a> for more information.
</small>
<pre>
res([
&quot;api&quot;,
[
&quot;API&quot;,
&quot;Apiales&quot;,
&quot;Apiaceae&quot;,
&quot;Apia&quot;,
&quot;Apicomplexa&quot;,
&quot;Apicomplexa lifecycle stages&quot;,
&quot;Apidae&quot;,
&quot;APIA Leichhardt Tigers&quot;,
&quot;Apical membrane&quot;,
&quot;Apical consonant&quot;
]
])

Это означает, что сервер отправляет ответ, заключенный в функцию обратного вызова res, но эта функция не выполняется браузером (alert не вызывается). Я использую Firefox 5. Что с этим не так?

1 Ответ

2 голосов
/ 27 июля 2011

Это прямо сказано в ответе:

Вы смотрите HTML-представление формата JSON.HTML хорош для отладки, но, вероятно, не подходит для вашего приложения.

попробуй

<script type="text/javascript" src="http://en.wikipedia.org/w/api.php?action=opensearch&search=api&callback=res&limit=10&namespace=0&format=json">
...