假设我创建了一个对象:
var myObject =
{"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"};
Run Code Online (Sandbox Code Playgroud)
检索属性名称列表的最佳方法是什么?即我想最终得到一些变量'键',这样:
keys == ["ircEvent", "method", "regex"]
Run Code Online (Sandbox Code Playgroud) 至于详细的其他地方,否则显然是众所周知的,IE浏览器(版本绝对7,并在某些情况下,版本8)不落实的关键功能,特别是Array(如forEach,indexOf等).
这里和那里有许多变通方法,但我想将一组适当的,规范的实现折叠到我们的网站中,而不是复制,粘贴或破解我们自己的实现.我找到了js-methods,看起来很有前景,但我想在这里发帖看看是否有更高度推荐的另一个库.一些杂项标准:
假设我有一个单页应用程序,它使用第三方API作为内容.应用程序的逻辑仅在浏览器中,并且没有我可以写入的后端.
为了允许深度链接到应用程序的状态,我使用pushState来跟踪确定应用程序状态的一些变量(注意Ubersicht的公共版本还没有这样做).在这种情况下repos,labels,milestones和username,show_open(布尔)和with_comments(布尔)和without_comments(布尔).URL格式是?label=label_1,label_2,label_3&repos=repo_1….值通常是嫌疑人,大致[a-zA-Z][a-zA-Z0-9_-]或任何布尔指标.
到现在为止还挺好.现在,因为查询字符串可能有点长而且不实用,并且我希望能够传递类似http://espy.github.io/ubersicht/?state=SOMOPAQUETOKENTHATLOSSLESSLYDECOMPRESSESINTOTHEORIGINALVALUES#hoodiehq的URL ,越短越好.
我的第一次尝试是使用一些类似zlib的算法(https://github.com/imaya/zlib.js)和@flipzagging指向antirez/smaz(https // github.com/antirez/smaz)听起来更适合短字符串(JavaScript版本在https://github.com/personalcomputer/smaz.js).
由于=和&没有具体处理https://github.com/personalcomputer/smaz.js/blob/master/lib/smaz.js#L9,我们也许能够调整的东西有一点点.
此外,还有一个选项可以对固定表中的值进行编码,例如,参数的顺序是预定义的,我们需要跟踪的是实际值.例如,可能在smaz压缩之前a=hamster&b=cat变成7hamster3cat(长度+字符)或仓鼠|猫(值+ |).
还有什么我应该找的吗?
我使用如下所示的方法php从angularjs控制器向页面发布一些数据$http.
$scope.login = function(){
var data = {
'username' : $scope.username,
'password' : $scope.password
};
$http.post('login.php', data).success(function(response){
console.log(response);
});
};
Run Code Online (Sandbox Code Playgroud)
我知道我可以php使用以下方法检索此数据:
$postdata = json_decode(file_get_contents('php://input'), true);
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有更好的方法,angularjs所以我可以使用simple $_POSTin php来检索数据.
在jQuery我们可能只是简单地使用$.post那些可用于php在$_POST.为什么angularjs这不那么简单.有没有什么办法来填充$_POST的php,当我们做$http post的请求angularjs.请帮忙.
我想将Chrome扩展程序与Google电子表格集成.
简单来说:我希望我的Chrome扩展程序能够打开电子表格并调用电子表格中包含的其中一个脚本.特别是JSON数据(参见最后的更新).
所以我需要一个详细的答案.而其中的部分是绝对必要的.
到目前为止,我有一个非常好的脚本运行(脚本不是这个问题的范围),绑定到电子表格.(该脚本应仅针对此工作表运行,因此除非出于技术原因,否则保持绑定不是问题).
工作表需要获取一些外部数据(我无法控制)来运行带有该数据的脚本.如果我使用电子表格进行尝试UrlFetch,我会遇到跨域问题而谷歌阻止我(如果你可以帮助我绕过这个跨域问题,它也会很棒).
在Chrome扩展程序中,附加到检索数据的页面,我可以执行所需的所有请求并实际获取数据,但之后,我不知道如何将此数据发送到工作表.
所以,我希望扩展和工作表能够相互通信.它不需要是双向谈话.如果只是扩展程序可以在工作表中输入数据而没有得到答案,则它可以工作.
这可以实现吗?
还有另一种方法吗?
更新:
在@Peter Herrmann的帮助下,我能够摆脱零.doGet并doPost设置(如此问题的结尾所示),现在我正在努力将"JSON"数据发送到工作表.我在单独的表中创建了"JSON"和"JSONP"版本以进行测试.
如果我exec在浏览器的导航栏中输入链接,它工作正常(但我相信这只是一个"GET",是吗?我可以通过导航栏发送JSON吗?).
如果我使用浏览器的控制台发送XMLHttpRequest它会带来以下错误,无论是脚本的"JSON"还是"JSONP"版本:
用于请求的代码是:
var req = new XMLHttpRequest();
req.open("POST", "https://script.google.com/macros/.../exec", true);
req.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
req.send(JSON.stringify({d1:"hey", d2:"there"}));
Run Code Online (Sandbox Code Playgroud)
但是,在像这样的脚本标记中使用标准的"JSONP"请求是有效的(但是这不会将JSON发送到工作表,是吗?):
$("<script src='https://script.google.com/macros/s/AKfycbza11ABUxtxn-rcv-1v2ZM3uCzpARx1-t6KkPJk4rtAta_4SQc/exec?prefix=window.alert'></script>").appendTo($(document.head)).remove();
Run Code Online (Sandbox Code Playgroud)
如果我尝试将请求代码放在脚本标记内,它也会导致"不允许"错误.
在表格代码中,相关部分是:
function doGet(request) {
var result = JSON.stringify({data: 'Thanks, I received the request'});
//JSON
return …Run Code Online (Sandbox Code Playgroud) xmlhttprequest google-sheets urlfetch google-chrome-extension google-apps-script
javascript ×3
angularjs ×1
browser ×1
compression ×1
jquery ×1
php ×1
post ×1
url ×1
urlfetch ×1