簡體   English   中英

盡管在chrome控制台中正確顯示了我的JSON對象,但返回的是undefined?

[英]My JSON object is returned as undefined despite showing correctly in the chrome console?

我從Wikipedia提取了一篇隨機文章,可以在Chrome控制台中看到該對象作為輸出,但是在網頁上,它只是說未定義。 我嘗試了字符串化以及將對象中的元素顯示為[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> 

如果只想從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> 

這是可行的。 級別令人困惑的是:

$(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',
      dataType: "json",
      success: function(data, status, jqXHR) {
      console.log(data);
        $('#result').html();
        var pageTitle = JSON.stringify(data.query.pages[Object.keys(data.query.pages)[0]].title);
        var pageContent = data.query.pages[Object.keys(data.query.pages)[0]].revisions;
        var pageCon = pageContent[Object.keys(pageContent)[0]];
        var pageC = pageCon["*"];

        //data.query.pages[Object.keys(data.query.pages)[0]];

        $('#result').prepend("<div><div class='result-head'>"+pageC+"</div></div>");

        $('#result').prepend("<div><h2>"+pageTitle+"</h2></div>"); 


        //stringify(data[2][0][0])
        }}
    )
    .done(function() {
      console.log("success");
    })
    .fail(function() {
      console.log("fail");
    })
    .always(function() {
      console.log("always success");
    })
    //
  })
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM