JSONP无法在页面上工作

时间:2011-07-27 14:24:39

标签: callback jsonp wikipedia-api

我有一个页面,我正在使用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>

这里我在url中提供名为res的回调函数。正如我在萤火虫中看到的那样,响应来自

<!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;
]
])
</pre>
</body>
</html> 

这意味着服务器正在发送回调函数res中包含的响应,但浏览器不执行此功能(alert未被调用)。我正在使用firefox 5。这有什么不对吗?

1 个答案:

答案 0 :(得分:2)

它在响应中说它就在那里:

  

您正在查看JSON格式的HTML表示   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">