尽管在Chrome控制台中正确显示,我的JSON对象仍然是未定义的?

时间:2017-01-24 11:12:17

标签: javascript html json getjson stringify

我正在从维基百科中获取随机文章,我可以在Chrome控制台中看到该对象作为输出,但在网页上,它只是说未定义。 我已经尝试过stringify以及显示来自对象的元素[2] [0] [0] [3],但它们都不起作用。他们都说print'undefined'作为输出而不是对象中包含的随机wiki页面的标题或内容或url。

脚本代码:

$(function() {
  $("#random").on("click", function() {
    var url = 'https://en.wikipedia.org/w/api.php?format=json&action=query&generator=random&grnnamespace=0&prop=revisions&rvprop=content&grnlimit=1&callback=?';
    $.ajax({
        url: url,
        type: 'GET',
        contentType: "application/json; charset=utf-8",
        async: false,
        dataType: "json",
        success: function(data, status, jqXHR) {
          console.log(data);
          $('#result').html();
          $('#result').prepend("<div><div class='result-head'>" + JSON.stringify(data[2]) + "</div></div>");

          //stringify(data[2][0][0])
        }
      })
      .done(function() {
        console.log("success");
      })
      .fail(function() {
        console.log("fail");
      })
      .always(function() {
        console.log("always success");
      })
      //
  })
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="random">Random</button>
<div id="result"></div>

2 个答案:

答案 0 :(得分:1)

如果您只想从Ajax响应中获取内容正文,可以尝试以下方法:

$(function() {
  $("#random").on("click",function() {
    var url = 'https://en.wikipedia.org/w/api.php?format=json&action=query&generator=random&grnnamespace=0&prop=revisions&rvprop=content&grnlimit=1&callback=?';
    $.ajax({
      url: url,
      type: 'GET',
      contentType: "application/json; charset=utf-8",
      dataType: "json",
      success: function(data, status, jqXHR) {
        var pageId = Object.keys(data.query.pages)[0] || false;
        if (pageId){
          var articleContent =  data.query.pages[pageId].revisions[0]['*'];
          $('#result').html();
          $('#result').prepend("<div><div class='result-head'>"+articleContent+"</div></div>");
        }
       }}
    )
    .done(function() {
      console.log("success");
    })
    .fail(function() {
      console.log("fail");
    })
    .always(function() {
      console.log("always success");
    })
    //
  })
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="random">Get Random</button>
<div id="result"></div>

答案 1 :(得分:0)

这是有效的。水平令人困惑的是:

  function (action) {
    if (typeof action === 'function') {
      return action(dispatch, getState, extraArgument);
    }

    return next(action);
  }