2016-03-17 118 views
0

我有一個名爲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 ,爲什麼+丟失?

當我與靜態URL來測試像下面它的工作

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

'+ q' =>'+ encodeURIComponent(q)' – dandavis

+0

@dandavis,把它作爲答案。 –

+0

你想做什麼?用plus替換空格?或者讓空間與網址工作? –

回答

0

你要查詢編碼爲URI組件:

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

一些庫可以處理這個給你,別人不會。在這種情況下,它看起來像圖書館沒有爲你處理它。

+0

這仍然不會給你在URL中的'+',這可能是一個交易破壞OP ... – dandavis

+0

@dandavis - 只要值是正確的編碼,應該沒關係('阿黛爾+滾動+ in + the + deep'和'adele%20rolling%20in%20the%20deep'被服務器解析的方式相同)。 –

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)); 
0

一個簡單的替換就可以了:

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

易peasy。