我有一个名为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
答案 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。