YQL 在查询 Google Drive 时不调用回调函数
YQL not calling callback function when querying Google Drive
这是我第一次在项目中使用 YQL,如果我犯了愚蠢的错误,请见谅。
我正在尝试使用 YQL 获取可公开查看的 Google Drive 文件夹的内容列表,然后我可以通过 Javascript 对其进行操作。我的 JavaScript 非常接近 Yahoo 的 example code,但我的代码无法正常工作。 (我已经得到了实际的例子。)似乎 YQL 甚至没有触发回调函数,但我什至不确定如何调试正在发生的事情。
Here's my query 在 YQL 控制台上,似乎可以正常工作。
这是我的测试页的 HTML,没有任何反应:
<!DOCTYPE html>
<html>
<head>
<title>
Test
</title>
<script type="text/javascript">
//Parses returned response
function specialhelper (yqlQuery) {
//Attenpt to see if function is even being called
document.getElementById("yes").innerHTML = "Yes!"
var items = yqlQuery.query.results.a;
var output = "";
var no_items=items.length;
for(var i=0;i<no_items;i++){
var iHref = contents[i].href;
var iContent = contents[i].content;
output += "<p><b>" + iContent + "</b> " + iHref + "</p>"
}
// Place output in div tag
document.getElementById('results').innerHTML = output;
}
</script>
</head>
<body>
<p id="yes">No</p>
<!-- Div tag for results -->
<div id='results'></div>
<!-- The YQL statment will be assigned to src. -->
<script src="https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22https%3A%2F%2Fgoogledrive.com%2Fhost%2F0B-3jydFVOQDnLUM5QmM3c0Vfa3M%2F%22%20and%20xpath%3D'%2F%2Fdiv%5B%40class%3D%22folder-cell%22%5D%2Fa'&format=json&callback=specialhelper">
</body>
您的代码中有 2 个小错误:
1- 您忘记在 </body>
之前添加结尾 </script>
。将它添加到您的函数的回调将起作用,您将在第一个 <p>
.
中看到 "Yes!"
2- 在:
for(var i=0;i<no_items;i++){
var iHref = contents[i].href;
var iContent = contents[i].content;
...
}
您正在使用一个名为 contents
的变量。此类变量之前未在您的代码中声明或使用过。您应该将 contents[i]
替换为 items[i]
.
这是我第一次在项目中使用 YQL,如果我犯了愚蠢的错误,请见谅。
我正在尝试使用 YQL 获取可公开查看的 Google Drive 文件夹的内容列表,然后我可以通过 Javascript 对其进行操作。我的 JavaScript 非常接近 Yahoo 的 example code,但我的代码无法正常工作。 (我已经得到了实际的例子。)似乎 YQL 甚至没有触发回调函数,但我什至不确定如何调试正在发生的事情。
Here's my query 在 YQL 控制台上,似乎可以正常工作。
这是我的测试页的 HTML,没有任何反应:
<!DOCTYPE html>
<html>
<head>
<title>
Test
</title>
<script type="text/javascript">
//Parses returned response
function specialhelper (yqlQuery) {
//Attenpt to see if function is even being called
document.getElementById("yes").innerHTML = "Yes!"
var items = yqlQuery.query.results.a;
var output = "";
var no_items=items.length;
for(var i=0;i<no_items;i++){
var iHref = contents[i].href;
var iContent = contents[i].content;
output += "<p><b>" + iContent + "</b> " + iHref + "</p>"
}
// Place output in div tag
document.getElementById('results').innerHTML = output;
}
</script>
</head>
<body>
<p id="yes">No</p>
<!-- Div tag for results -->
<div id='results'></div>
<!-- The YQL statment will be assigned to src. -->
<script src="https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22https%3A%2F%2Fgoogledrive.com%2Fhost%2F0B-3jydFVOQDnLUM5QmM3c0Vfa3M%2F%22%20and%20xpath%3D'%2F%2Fdiv%5B%40class%3D%22folder-cell%22%5D%2Fa'&format=json&callback=specialhelper">
</body>
您的代码中有 2 个小错误:
1- 您忘记在 </body>
之前添加结尾 </script>
。将它添加到您的函数的回调将起作用,您将在第一个 <p>
.
2- 在:
for(var i=0;i<no_items;i++){
var iHref = contents[i].href;
var iContent = contents[i].content;
...
}
您正在使用一个名为 contents
的变量。此类变量之前未在您的代码中声明或使用过。您应该将 contents[i]
替换为 items[i]
.