相关疑难解决方法(0)

如何列出JavaScript对象的属性?

假设我创建了一个对象:

var myObject =
        {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"};
Run Code Online (Sandbox Code Playgroud)

检索属性名称列表的最佳方法是什么?即我想最终得到一些变量'键',这样:

keys == ["ircEvent", "method", "regex"]
Run Code Online (Sandbox Code Playgroud)

javascript

807
推荐指数
15
解决办法
71万
查看次数

修复Internet Explorer中的JavaScript数组函数(indexOf,forEach等)

至于详细的其他地方,否则显然是众所周知的,IE浏览器(版本绝对7,并在某些情况下,版本8)不落实的关键功能,特别是Array(如forEach,indexOf等).

这里和那里有许多变通方法,但我想将一组适当的,规范的实现折叠到我们的网站中,而不是复制,粘贴或破解我们自己的实现.我找到了js-methods,看起来很有前景,但我想在这里发帖看看是否有更高度推荐的另一个库.一些杂项标准:

  • 对于浏览器已经实现的那些函数,库应该只是一个无操作(js-methods在这里看起来做得很好).
  • GPL,请尽管LGPL是可以接受的.

javascript internet-explorer cross-browser

137
推荐指数
3
解决办法
8万
查看次数

如何压缩URL参数

假设我有一个单页应用程序,它使用第三方API作为内容.应用程序的逻辑仅在浏览器中,并且没有我可以写入的后端.

为了允许深度链接到应用程序的状态,我使用pushState来跟踪确定应用程序状态的一些变量(注意Ubersicht的公共版本还没有这样做).在这种情况下repos,labels,milestonesusername,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(长度+字符)或仓鼠|猫(值+ |).

还有什么我应该找的吗?

javascript browser compression url single-page-application

55
推荐指数
7
解决办法
2万
查看次数

AngularJS HTTP发布到PHP

我使用如下所示的方法phpangularjs控制器向页面发布一些数据$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这不那么简单.有没有什么办法来填充$_POSTphp,当我们做$http post的请求angularjs.请帮忙.

php jquery post angularjs

4
推荐指数
1
解决办法
4448
查看次数

从外部应用程序调用绑定脚本 - Google电子表格

我想将Chrome扩展程序与Google电子表格集成.

简单来说:我希望我的Chrome扩展程序能够打开电子表格并调用电子表格中包含的其中一个脚本.特别是JSON数据(参见最后的更新).

  • 我处理扩展的知识很好.
  • 另外,我在电子表格中创建绑定脚本的知识.
  • 但是,我对谷歌网络应用程序,doGets和类似的东西的知识非常困惑,他们的文档从我应该知道他们在谈论什么的点开始,但我没有.所以我需要有关事情如何流动的细节.在不知道代码应该是什么以及在哪里的情况下谈论身份验证和内容似乎并没有带来任何影响.

所以我需要一个详细的答案.而其中的部分是绝对必要的.

到目前为止,我有一个非常好的脚本运行(脚本不是这个问题的范围),绑定到电子表格.(该脚本应仅针对此工作表运行,因此除非出于技术原因,否则保持绑定不是问题).

工作表需要获取一些外部数据(我无法控制)来运行带有该数据的脚本.如果我使用电子表格进行尝试UrlFetch,我会遇到跨域问题而谷歌阻止我(如果你可以帮助我绕过这个跨域问题,它也会很棒).

在Chrome扩展程序中,附加到检索数据的页面,我可以执行所需的所有请求并实际获取数据,但之后,我不知道如何将此数据发送到工作表.

所以,我希望扩展和工作表能够相互通信.它不需要是双向谈话.如果只是扩展程序可以在工作表中输入数据而没有得到答案,则它可以工作.

这可以实现吗?

还有另一种方法吗?


更新:

在@Peter Herrmann的帮助下,我能够摆脱零.doGetdoPost设置(如此问题的结尾所示),现在我正在努力将"JSON"数据发送到工作表.我在单独的表中创建了"JSON"和"JSONP"版本以进行测试.

如果我exec在浏览器的导航栏中输入链接,它工作正常(但我相信这只是一个"GET",是吗?我可以通过导航栏发送JSON吗?).

如果我使用浏览器的控制台发送XMLHttpRequest它会带来以下错误,无论是脚本的"JSON"还是"JSONP"版本:

  • Chrome控制台:"XMLHttpRequest无法加载https://script.google.com/macros/s/xxxx/exec.对预检请求的响应未通过访问控制检查:否存在'Access-Control-Allow-Origin'标头因此,请求资源.原因https://xxxxxxxxx.com不允许访问.响应的HTTP状态代码为405."
  • Mozilla的控制台---"405方法不允许".

用于请求的代码是:

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

1
推荐指数
1
解决办法
1285
查看次数