处理网址

时间:2016-03-17 01:58:51

标签: javascript

我有一个名为x的函数,它是一个插件的方法,但我有问题使用变量作为参数,如下所示:

var q= 'adele rolling in the deep';
x('http://search.azlyrics.com/search.php?q='+q); // doesn't worked

我做console.log('http://search.azlyrics.com/search.php?q='+q)它给了我 http://search.azlyrics.com/search.php?q=adele rolling in the deep,为什么+丢失?

当我使用下面的静态网址进行测试时,它可以正常工作

x('http://search.azlyrics.com/search.php?q=adele+rolling+in+the+deep'); // worked

3 个答案:

答案 0 :(得分:0)

您必须将查询编码为URI组件:

x('http://search.azlyrics.com/search.php?q=' + encodeURIComponent(q));

有些图书馆可能会为您处理此问题,其他图书馆则不会。在这种情况下,看起来图书馆不会为您处理它。

答案 1 :(得分:0)

这很简单。在URL中,空间可以解码为'%20' (查看ascii表)或更常见的是+。你在这里做的只是一个简单的字符串添加或组合。这意味着如果你必须串起a和b,就会出现以下情况:

var c = a + b
c -> ab (and you put for a and b the values that you defined before)

你在做什么是完全一样的。您只需组合字符串而不影响其值。要将其转换为url格式,您需要使用:

x('http://search.azlyrics.com/search.php?q=' + encodeURIComponent(q));

答案 2 :(得分:0)

一个简单的替换就可以解决问题:

x(('http://search.azlyrics.com/search.php?q='+q).replace(/ /g,'+'))

Easy Peasy。