【问题标题】:Get JSON data from external URL and insert in a div as plain text从外部 URL 获取 JSON 数据并以纯文本形式插入 div
【发布时间】:2013-12-31 00:57:15
【问题描述】:

我编写了一个函数来显示来自外部网页的一些段落标签。由于某种原因,结果显示在 firebug 控制台中,但没有按我的意愿显示在网页上(空白页)。

function requestCrossDomain(callback){
  var querylink = "select * from html where url='http://somedomain.com'" +  
                     " and xpath='/html/body/div/div/div[2]/div/div/div/dl'";
  var yql = 'http://query.yahooapis.com/v1/public/yql?q=' + 
                encodeURIComponent(querylink) + '&format=json&callback?';

  $.getJSON(yql, function(data){
    if (typeof callback === 'function'){
      callback(data);
      }
   });
}

我的萤火虫控制台显示以下值。

{"query":{"count":1,"created":"2013-12-23T06:31:46Z","lang":"en-US","results":{"dd":{"p":"Hills: High"}}}}

如何修改代码以显示P标签的值,即“Hills: High”

我从 HTML 代码调用函数并尝试在“#targetWrapper”中显示值

requestCrossDomain(function(results){
  $('#targetWrapper').html(results);
});

【问题讨论】:

  • 你期待什么?回调(数据)触发 requestCrossDomain(?

标签: javascript jquery json yql


【解决方案1】:

编辑以反映功能性fiddle

$(document).ready(function(){
  requestCrossDomain();
});

function requestCrossDomain(){
  var querylink = "select * from html where url='http://www.bom.gov.au/wa/forecasts" +  
                  "/armadale.shtml' and xpath='/html/body/div/div/div[2]/div/div" +  
                  "/div/dl'";   

  var yql = 'http://query.yahooapis.com/v1/public/yql?q=' +
             encodeURIComponent(querylink) + '&format=json&callback?';

  $.getJSON(yql, function(data){
    $('#targetWrapper').html(data.query.results.dl.dd[0].p);
    $("#targetWrapper").append("<br/><strong>" + JSON.stringify(data) + "</strong>");
  });
}

您的数据格式非常不符合标准,并且您不能有两个同名的函数。

【讨论】:

  • 我还是 javascript 新手。即使在您提到的更改代码后也无法显示信息。请在此处查看我的代码jsfiddle.net/landy90/pdF3e/2
【解决方案2】:

您从$.getJSON 返回的对象是一个简单的Javascript Object。您可以像访问任何其他对象一样访问它:

在这种情况下,你会使用:

requestCrossDomain(function(results) {
    $("#targetWrapper").html(results.query.results.dd.p);
}

我强烈建议您阅读我在上面链接的 MDN 文档。将 MDN 加入书签也是一个好主意;这是一个很好的资源,可以轻松访问。

【讨论】:

  • 我尝试按照您的建议修改结果,但仍然得到一个空白页。请在此处查看代码 jsfiddle.net/landy90/L9DaL/
  • 我也收到一个错误提示“TypeError: data.query.results.dd is undefined”
  • @user2574948,那是因为您的数据格式非常不合时宜。检查我更新的答案。
猜你喜欢
  • 2012-04-12
  • 2020-01-23
  • 1970-01-01
  • 2019-04-26
  • 1970-01-01
  • 2013-05-06
  • 2020-12-19
  • 2015-12-08
  • 1970-01-01
相关资源
最近更新 更多