你如何在网址中解码html?

时间:2014-11-14 09:47:51

标签: javascript html

在我的项目中,我有一个“后退按钮”,它调用一个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;

                    }

老实说,如果我这样做的话,我不会这样做(我不确定)..请问有人帮忙吗?

2 个答案:

答案 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];
}