如何显示WikiText

时间:2011-03-31 14:54:32

标签: javascript jquery mediawiki

我想从Wikipedia页面获取WikiText并使用Javascript在浏览器中显示它。以下是我目前的情况:

<!DOCTYPE html>
<html>
<head>
  <script src="http://code.jquery.com/jquery-1.5.js"></script>
</head>
<body>
  <div id="wikiInfo">&nbsp;</div>

  <script>
    $.get('http://en.wikipedia.org/w/index.php?action=raw&title=Dog&callback=?',
         function(data) {
           $("div").add(data);
           alert('load performed');
   });
  </script>
</body>
</html>

但是,这似乎不起作用。最后,我希望能够将获取的wiki文本保存到变量中,因此对此也有任何帮助。

2 个答案:

答案 0 :(得分:3)

它是跨域的,所以它不起作用...制作一个wiki.php并用JS获取“wiki.php?title = Dog”...

function curl($url){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_close ($ch);
    return curl_exec($ch);
}

$title = $_GET["title"];

echo curl("http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&format=json&callback=?&titles=$title");

使用@Tgr WikiPedia链接编辑。我还建议在PHP中解析JSON,然后输出HTML或原始文本。

答案 1 :(得分:2)

action=raw不接受JSONP回调参数。你应该进行适当的API调用:

$.getJSON('http://en.wikipedia.org/w/api.php?'+
     'action=query&prop=revisions&rvprop=content'+
     '&format=json&callback=?&titles=Dog', 
     function(result) { /* process JSON result */ });

请参阅API documentationthis remark关于JSONP限制),working example以及关于same-origin policyJSONP的维基百科文章,了解您的第一个方法为什么没有不行。

您可以将'json'替换为'jsonfm'来研究API结果的格式:http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&format=jsonfm&titles=Dog