如何获得维基百科的第一个解析段?

时间:2017-03-19 19:30:46

标签: javascript jquery wikipedia

这是我正在使用的 js

function onSuccess(data){
      var markupt = data.parse.text["*"];
      $('#usp-custom-4').val(markupt);
      console.log(markupt);
      var blurbt = $('<div></div>').html(markupt);
      blurbt.find(".mw-editsection, #toc, .noprint, .thumb, img, table").remove();
      // remove links as they will not work
      blurbt.find('a').each(function() { $(this).replaceWith($(this).html()); });
      // remove any references
      blurbt.find('sup').remove();
      // remove cite error
      blurbt.find('.mw-ext-cite-error').remove();
      var pOnly  = $(blurbt).find('p').text();
    }

    function firstWiki() {
      var titolo = $("#headingWiki_0 h3 span").text();
      $.ajax({
        url: "https://it.wikipedia.org/w/api.php?action=parse&format=json&prop=text&section=0",
        page: titolo,
        dataType: "jsonp",
        jsonpCallback: "onSuccess"
      });
    }

html

<div id="headingWiki_0"><h3><span>Roman empire</span></h3></div>
<button id="wiki">Load</button>
<textarea id="usp-custom-4"></textarea>

这是jsFiddle

我根本没有收到textarea的内容

1 个答案:

答案 0 :(得分:0)

我对代码做了一些调整,然后我开始工作了(你可以看到下面的新小提琴。

  1. 我在网址中添加了page参数。到目前为止它没有被添加,所以你的最初小提琴得到了维基百科的错误回复。这意味着首先没有文章文本可供使用。我也对它进行了编码。
  2. 我改变了指定JsonP回调的方式。 jQuery正确地将callback参数添加到URL中,并且Wikipedia结果正确地返回对它的调用,但它不会被执行。使用callback=?并让jQuery使用success选项处理回调就行了。
  3. 我为Roman Empire切换Impero romano,这是您可以在维基百科的IT版本中找到的文章。
  4. 我为val切换了text。在textareas的情况下,他们不会将value作为其他输入,而是文本内容。我知道,不一致。
  5. $("#wiki").on("click", function(){
    	firstWiki();
    });
    
    
    function onSuccess(data){
          var markupt = data.parse.text["*"];
          $('#usp-custom-4').text(markupt);
          console.log(markupt);
          var blurbt = $('<div></div>').html(markupt);
          blurbt.find(".mw-editsection, #toc, .noprint, .thumb, img, table").remove();
          // remove links as they will not work
          blurbt.find('a').each(function() { $(this).replaceWith($(this).html()); });
          // remove any references
          blurbt.find('sup').remove();
          // remove cite error
          blurbt.find('.mw-ext-cite-error').remove();
          var pOnly  = $(blurbt).find('p').text();
    }
    
    function firstWiki() {
      var titolo = $("#headingWiki_0 h3 span").text();
      titolo = encodeURIComponent(titolo);
      $.ajax({
        url: "https://it.wikipedia.org/w/api.php?action=parse&format=json&prop=text&section=0&page=" + titolo + "&callback=?",
        contentType: "application/json; charset=utf-8",
        dataType: "jsonp",
        success: onSuccess
      });
    }
    textarea {
      width: 100%;
      height: 200px;
    }
    
    input[type=checkbox] {
      display: none;
    }
    
    input[type=checkbox] + label {
      background: #999;
      display: inline-block;
      padding: 0;
    }
    
    input[type=checkbox]:checked + label {
      border: 10px solid grey;
      padding: 0;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div id="headingWiki_0"><h3><span>Impero romano</span></h3></div>
    <button id="wiki">
    Load
    </button>
    <textarea id="usp-custom-4"></textarea>