2014-09-22 36 views
0

将“key”变量放入此字符串内时,它将显示“simplelogin%3A5”而不是“simplelogin:5”。有没有办法让后者通过?传入关键字会导致我的Firebase网址中出现多余字符,我该如何删除它们?

var populateTasks = function(date, key){ 
    $scope.ref = new Firebase("https://myfirebase.firebaseio.com/users/"+key+"/tasks"); 
    }; 

结果:https://myfirebase.firebaseio.com/users/simplelogin%3A5/tasks 我需要:https://myfirebase.firebaseio.com/users/simplelogin:5/tasks

+1

我只是用演示网址试了一下,并且无法使用'simplelogin:5'重现此操作。这表明您的密钥在连接时已经被编码。你应该证明更多关于这个密钥来自哪里的数据(大概是一个URI),这对准确的答案是至关重要的。 – Kato 2014-09-22 14:18:56

回答

1
var uri = "//what you need to convert"; 
var uri_dec = decodeURIComponent(uri); 
var res = uri_dec; 
0

你试过它串联到URL之前修剪的关键?

key = key.trim(); 
+0

这不是一个空格问题,但是:在由浏览器转义的id的中心。 – Kato 2014-09-22 14:12:35

1

key的值从哪里来?如果你从网址中获得它,那么你可以看到%3A

A :在URL中有特殊含义,所以它会被转义。并且:的URL转义序列是%3A

要转换%3A:你只是反转义这样的:

unescape(key) 

或者使用decodeURIComponent,在这种情况下完成相同的。解码值的最好方法取决于它为什么被编码,因此我的第一个问题。

相关问题