【问题标题】:YQL request and javascript : displaying everythingYQL 请求和 javascript:显示所有内容
【发布时间】:2016-06-09 17:19:39
【问题描述】:

对于一个项目,我需要获取一些网站的圆顶并解析它。我找到了 YQL 的解决方案。该请求似乎在此站点上运行良好。 https://developer.yahoo.com/yql/

但是当我使用以下 javascript 在本地网站上使用它时:

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8" />
	<title>BabylonJS - HexaGrid</title>
	<style>
		body, html { 
			margin:0; 
			padding: 0; 
			border: 0; 
			overflow: hidden; 
			width: 100%; 
			height: 100%; 
		}

		canvas { width: 100%; height: 100%; }
		
		#vr {
			position: absolute;
			top: 10px;
			left: 10px;
			padding: 10px 15px;
			border: 2px solid #ddd;
			background: #4587ea;
			color: #fff;
			transition: all 0.3s;
		}
		
		#vr:hover {
			transition: all 0.3s;
			background: #449fff;
			cursor: pointer;
		}	
	</style>
</head>
<body>
  <script type="text/javascript">
var url = 'https://www.brainpickings.org/2016/06/09/strange-trees/';
 $.getJSON("http://query.yahooapis.com/v1/public/yql?"+
                "q=select%20*%20from%20html%20where%20url%3D%22"+
                encodeURIComponent(url)+
                "%22&format=json'&callback=?", function(data){
          // if there is data, filter it and render it out
          if(data.results[0]){
            var test = data.results[0];
	    alert(test);
          } else {
            var errormsg = "<p>Error: can't load the page.</p>";
            alert(errormsg);
          }
      });
</script>
</body>
</html>

它只显示请求的一部分。我真的不知道出了什么问题,如果是因为 yql 请求很大并且没有完成,或者我缺乏获取剩余内容的知识。 提前感谢您的回答。

【问题讨论】:

    标签: javascript html dom yql


    【解决方案1】:

    您的代码正在使用但缺少 jQuery 库,并且不等待文档准备好。以下是已修复且正常工作的代码:

    <!DOCTYPE html>
    <html>
    
    <head>
        <meta charset="utf-8" />
        <title>BabylonJS - HexaGrid</title>
        <style>
            body,
            html {
                margin: 0;
                padding: 0;
                border: 0;
                overflow: hidden;
                width: 100%;
                height: 100%;
            }
            
            canvas {
                width: 100%;
                height: 100%;
            }
            
            #vr {
                position: absolute;
                top: 10px;
                left: 10px;
                padding: 10px 15px;
                border: 2px solid #ddd;
                background: #4587ea;
                color: #fff;
                transition: all 0.3s;
            }
            
            #vr:hover {
                transition: all 0.3s;
                background: #449fff;
                cursor: pointer;
            }
        </style>
    
        <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0-rc1/jquery.min.js"></script>
    </head>
    
    <body>
        <script type="text/javascript">
        $(document).ready(function () {
        var url = 'https://www.brainpickings.org/2016/06/09/strange-trees/';
         $.getJSON("http://query.yahooapis.com/v1/public/yql?"+
                        "q=select%20*%20from%20html%20where%20url%3D%22"+
                        encodeURIComponent(url)+
                        "%22&format=json'&callback=?", function(data){
                  // if there is data, filter it and render it out
                  if(data.results[0]){
                    var test = data.results[0];
        	    alert(test);
                  } else {
                    var errormsg = "<p>Error: can't load the page.</p>";
                    alert(errormsg);
                  }
              });
        });
        </script>
    </body>
    
    </html>

    【讨论】:

    • 非常感谢,我确实在 jquery 中添加了该行,但忘记将其放入 sn-p。但我完全忘记了 $(document).ready。自从我做js以来已经有一段时间了。我试过了,但我仍然有同样的错误。 data.results[0] 只检索 DOM 直到“Susan Sontag 讲故事、做一个有道德的人意味着什么以及她对作家的建议
    • 如果您使用console.log(data.results),它会显示从 到 的整个页面的源代码(包括 Susan Sontag 文章之后的所有内容)。这是从 data.results[0] 中获取所需内容的问题。
    • 哦,我没有看到我可以扩展 console.log 显示的内容。它的工作原理,非常感谢。
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签