2016-05-04 61 views
0

我從XML中獲取數據並構建傳遞給Pinterest的url。如何在URL中編碼&不是查詢參數的一部分?

的Pinterest的URL結構是

https://www.pinterest.com/pin/create/button/?url=[URL]&media=[media URL]&description=[description] 

對於超出我的控制的原因,在XML中[描述]字段具有文字符號字符。例:「花生醬&果凍三明治」

如果我嘗試把這個整個Pinterest的網址爲encodeURIComponent方法(),即&變成26%,但它不是一個查詢參數&。

預期的輸出應該有希望是: https://www.pinterest.com/pin/create/button/?url=http%3A%2F%2Fwww.test.com%2Frecipe%2Fpeanut-butter-jelly-sandwich.html&media=http%3A%2F%2Fwww.test.com/images/pbjs.jpg&description=Peanut%20Butter%20%26%20Jelly%20Sandwich

哪些選項有在XSLT 1.0或JS幫我處理呢?

編輯1:增加了預期輸出。

編輯2:事實證明,有另一段代碼執行重定向在我們的網站,它需要特殊字符後本身進行編碼。它造成了不兼容。

+0

什麼是您預期的輸出? –

+0

用%26替換&確實是錯誤的嗎?例如,請參閱https://www.google.com/?gws_rd=ssl#safe=off&q=black+%26+decker或https://www.pinterest.com/pin/create/button/?url=http ://pjb.example.com&description=Peanut+Butter+%26+Jelly –

+0

@JoyceBabu:增加了預期的輸出。 – Stephen

回答

1

在將其添加到url之前,您需要轉義[description]

"https://www.pinterest.com/pin/create/button/?url=[URL]&media=[media URL]&description=" + escape("Peanut Butter & Jelly Sandwich") 

或者你可以做

var data = { 
 
    url: 'http://google.com', 
 
    media: 'http://media/url', 
 
    description: 'Peanut Butter & Jelly Sandwich' 
 
}; 
 
var pinterest_url = 'https://www.pinterest.com/pin/create/button/?url=[url]&media=[media]&description=[description]'; 
 
for (var key in data) { 
 
    pinterest_url = pinterest_url.replace("[" + key + "]", escape(data[key])); 
 
} 
 

 
alert(pinterest_url);

+1

感謝您的指導。我發現我們網站上的另一段代碼需要任何東西在網址後面進行轉義,所以它會導致與&符導致這個問題。這段代碼不兼容,所以我們不得不刪除它。一旦我們這樣做了,URL的其餘部分就可以遵循正常的約定。 – Stephen