2016-05-04 6 views
0

Ich erhalte Daten aus XML und erstelle eine URL, die an Pinterest übergeben wird.Wie codiert man & in URL, die nicht Teil des Abfrageparameters ist?

Die Struktur Pinterest URL ist

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

Aus Gründen außerhalb meiner Kontrolle, die [description] Feld in der XML ein wörtliches Zeichen-Zeichen hat. Beispiel: „Erdnussbutter & Jelly Sandwich“

Wenn ich versuche, diese ganze Pinterest URL in encodeURIComponent zu platzieren(), dass &% 26 wird, aber es ist kein Abfrageparameter &.

Erwartete Ausgabe sollte hoffentlich sein: 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

Welche Möglichkeiten gibt es in XSLT 1.0 oder JS mir damit umgehen zu helfen?

EDIT 1: Hinzugefügte erwartete Ausgabe.

EDIT 2: Es stellt sich heraus, dass ein anderer Code Code Redirects auf unserer Site ausgeführt hat, und es erforderte Sonderzeichen nach sich selbst codiert werden. Es verursachte eine Inkompatibilität.

+0

tun Was ist Ihre erwartete Ausgabe? –

+0

Was genau ist falsch beim Ersetzen von & mit% 26? Siehe beispielsweise https://www.google.com/?gws_rd=ssl#safe=off&q=black+%26+decker oder https://www.pinterest.com/pin/create/button/?url=http : //pjb.example.com&description=Peanut+Butter+%26+Jelly –

+0

@JoyceBabu: Die erwartete Ausgabe wurde hinzugefügt. – Stephen

Antwort

1

Sie müssen [description] vor dem Hinzufügen zu der URL zu entkommen.

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

Oder Sie könnten

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

Danke für die Richtung. Ich habe festgestellt, dass ein anderer Code auf unserer Website etwas nach sich in der URL benötigt, um zu entkommen, so dass es dieses Problem mit Et-Zeichen verursacht. Dieser Code ist nicht kompatibel, also müssen wir ihn entfernen. Sobald wir das tun, kann der Rest der URL den üblichen Konventionen folgen. – Stephen

Verwandte Themen