在我的项目中,我有一个“后退按钮”,它调用一个javaScript函数,在调用时会记住上一个url。
//back button function
function goBack() { $window.history.back(); }
单击后退按钮时记住或调用的URL包含ID,这是用于过滤数据的ID。我遇到的主要问题是这个ID是以html编码的字符串形式返回的。例如,这是被称为url的网址:
//查找$滤波器= VehicleId%20当量%20%272415 27%&安培?;
正如您所见,上面的网址中的VehicleId是2415,其编码为%20%272415%27&。这在纯文本中是VehicleId =“2415”。这与我的程序冲突,因为我的程序期望一个int变量而不是字符串。
为了解决这个问题,我试图去编码?从html到使ID成为一个int。我一直在看这个http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_unescape,但我仍然无法想象如何把它放在我的项目中。
我正在使用$ location来记住网址中的ID,如下所示:
if ($location.search().vehicle) {
var str = vehicle;
var strEsc = unescape(str);
vehicle = strEsc;
vehicle = $location.search().vehicle;
}
老实说,如果我这样做的话,我不会这样做(我不确定)..请问有人帮忙吗?
答案 0 :(得分:1)
decodeURIComponent
是关键:
decodeURIComponent('VehicleId%20eq%20%272415%27&'); // "VehicleId eq '2415'&"
这绝对不是一个正确的ID(更不用说你正在尝试$filter=VehicleId=2135
,当然会破坏查询字符串,找到一种编码该值的方法)。您应该使这些ID更加标准,因为您可以获得更准确的结果。
答案 1 :(得分:0)
您可以使用regexp来解析VehicleId,例如:
var tab=unescape(location.search).match(/VehicleId eq '(\d+)'/);
if (tab) {
var id=tab[1];
}