2016-05-04 2 views
0

私はXMLからデータを取得しており、Pinterestに渡すためのURLを構築しています。クエリパラメータの一部ではないURLを&でエンコードする方法はありますか?

PinterestのURLの構造は、私のコントロールを超えた理由から

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

で、XMLでの[説明]フィールドには、リテラルアンパサンド文字があります。例:「ピーナッツバター&ゼリーサンドイッチ」

私は&が26%になるが、それはクエリパラメータ&ではないことを、)(encodeURIComponentでにこの全体のPinterestのURLを配置しようとします。

の予想される出力がうまくいけば、次のようになります。 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にどのようなオプションがありますか?

EDIT 1:予想される出力を追加しました。

EDIT 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の後にエスケープする必要があることがわかったので、アンパサンドでこの問題を引き起こしていました。そのコードは互換性がないため、強制的に削除する必要があります。これを行うと、残りのURLは通常の規約に従うことができます。 – Stephen

関連する問題