为此搜索过高低.我有一个基本HTML/CSS/JS的网页.我希望用户能够访问该页面,在打开页面时,会调用我制作的Google脚本,该脚本从电子表格中获取信息并在页面上显示一些信息.我希望我不必像谷歌的教程那样做任何花哨的设置,因为它们都没有对我有帮助.
我的网页----> Google脚本----> Google电子表格
我的网页<---- Google Script <---- Google电子表格
用户应该能够选择网页上显示的项目(从电子表格填充的项目),然后单击一个按钮,该按钮将允许用户输入包含从所选项目派生的URL的新页面.
这本质上是一个聊天室程序,聊天室存储在电子表格中.我希望用户能够创建一个新的聊天室,这应该更新谷歌电子表格.
jquery中的初始.ajax调用:
$.ajax({
type: 'post',
url: 'items_data.php',
data: "id="+id,
dataType: 'json',
success: function(data){
if(data){
make_item_rows(data);
}else{
alert("oops nothing happened :(");
}
}
});
Run Code Online (Sandbox Code Playgroud)
将简单的字符串发送到php文件,如下所示:
header('Content-type: application/json');
require_once('db.php');
if( isset($_POST['id'])){
$id = $_POST['id'];
}else{
echo "Danger Will Robinson Danger!";
}
$items_data = $pdo_db->query ("SELECT blah blah blah with $id...");
$result_array = $items_data->fetchAll();
echo json_encode($result_array);
Run Code Online (Sandbox Code Playgroud)
我正好抓住$ result_array并将其传递给另一个函数.我仔细检查确实返回了正确的值,因为我可以将结果回显到我的页面,它显示如下内容:
[{"item_id":"230","0":"230","other_id":"700"},{"item_id":"231","0":"231","other_id":"701"},{"item_id":"232","0":"232","other_id":"702"}]
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚如何迭代结果,所以我可以将值注入我的HTML中的表中.这是我的功能:
function make_item_rows(result_array){
var string_buffer = "";
$.each(jQuery.parseJSON(result_array), function(index, value){
string_buffer += value.item_id; //adding many more eventually
$(string_buffer).appendTo('#items_container');
string_buffer = ""; //reset buffer after writing …Run Code Online (Sandbox Code Playgroud) 我刚刚开始使用谷歌+ API,并搜索了文档.看起来很简单.根据谷歌,他们的API调用返回json.为什么在我在jQuery中调用键值之前解析json之前必须对json进行字符串化?以下是我正在使用的代码示例:
$.ajax({
url: "https://www.googleapis.com/plus/v1/people/{user number}/activities/public?key={my api key}",
data: {
"maxResults": 20,
"verb": "post"
},
dataType: "json",
type: "get",
success: function (data) {
var num_actual_posts = 0;
data = $.parseJSON(JSON.stringify(data));
var listElements = $('ul#googleFeedUL li');
for (var i = 0; i < data.items.length; i++) {
if (data.items[i].verb == "post") {
$(listElements[num_actual_posts]).append(data.items[i].object.content);
num_actual_posts++;
if (num_actual_posts > 5) {
break;
}
}
}
},
error: function (e) {
alert(e);
}
});
Run Code Online (Sandbox Code Playgroud)
注意:我必须拨打20个帖子,因为当出于某种原因请求"post"动词时,用户所做的"份额"也会被返回.然后我在返回的json中查找实际帖子,以便仅显示真实帖子.文档似乎也没有告诉你如何通过解释json对象层次结构来提取数据,所以我只需要通过控制台跟踪它.'data.items [i] .object.content'是google +帖子的内容.
在设计工作中的小API并尽量使我的函数尽可能灵活的过程中,我决定开始添加是否传递参数的检查,然后基于此,做不同的事情.因此,当使用数字调用函数时,该函数将数字用作数组中的索引.如果没有传递数字,我希望函数调用自身的次数与数组的长度一样多.但是我得到了调用堆栈错误.我把问题归结为函数的递归方面,我将在下面列出.对我来说最奇怪的是......
这会导致错误
function testing(a){
if(!a){
for(var i = 0; i < 3; i += 1){
testing(i);
}
}else{
alert(a);
}
}
testing();
Run Code Online (Sandbox Code Playgroud)
这不会导致错误
function testing(a){
if(!a){
for(var i = 0; i < 3; i += 1){
testing(5);//Just adding hard coded number instead
}
}else{
alert(a);
}
}
testing();
Run Code Online (Sandbox Code Playgroud)
我试图理解为什么在调用中传递var会抛出错误.似乎如果js引擎可以在内存中保存初始函数调用以使for循环正常工作,为什么它在调用自身时不能保持对i的引用?我觉得我在这里缺少一些基本的东西.我尝试过很多涉及以下内容的重写:
testing(function(i){return i;}(i));
Run Code Online (Sandbox Code Playgroud)
一切都无济于事.这让我发疯,我想了解这里发生了什么.
我正在尝试进行chrome扩展.我的后台脚本在ui按下按钮时触发.它应该向我的内容脚本发送一条消息,该脚本将响应发送回后台脚本.无法弄清楚这是如何工作的.点击侦听器正在触发,但消息传递不起作用.这是我到目前为止所得到的:
后台脚本:
$(document).on('click', '#getGlobalFuncsBtn', function(){
chrome.extension.sendMessage({text:"getStuff"},function(reponse){
if(reponse.type == "test"){
console.log('test received');
}
});
console.log('click listener');
});
Run Code Online (Sandbox Code Playgroud)
内容脚本:
chrome.extension.onMessage.addListener(function(message,sender,sendResponse){
if(message.text == "getStuff"){
console.log('test sent');
sendResponse({type:"test"});
}
});
Run Code Online (Sandbox Code Playgroud)
弹出HTML:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<button id="getGlobalFuncsBtn">Get Global Funcs</button>
<script src="jquery-2.0.2.min.js"></script>
<script src="background.js"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
manifest.json的:
{
"manifest_version": 2,
"name": "Var Viewer",
"description": "This extension allows you to view and change all user defined js global vars.",
"version": "1.1",
"permissions": [
"storage"
],
"content_scripts": [
{
"matches": ["http://*/*", "https://*/*"],
"js": ["jquery-2.0.2.min.js","content.js"]
} …Run Code Online (Sandbox Code Playgroud)