2011-02-09 12 views
2

パラメータに '&'文字が含まれているURLがあります.AJAX呼び出しを行う必要がありますが、サーバーから送信されますソリューションは26%で、パラメータの「&」を置換してから電話をかけることですthat..so ...文字列内の "&"をすべて置換する正規表現

例えば..

url = http://localhost.com/?q=java&industry="IT&web"&location="New-york & Florida" 

結果がでなければなりません...

上の例外
= http://localhost.com/?q=java&industry="IT%26web"&location="New-york %26 Florida" 

答えて

1

をあなたがこの文字列で立ち往生し、それをエンコードするために試してみたい場合:

var url = "http://localhost.com/?q=java&industry=\"IT&web\"&location=\"New-york & Florida\""; 

1つのオプションは、もちろん、すべての引用された表現(それらが一致すると仮定し、捕獲することです)、それらにencodeURIComponentを適用します。結果は、引用符を含め、全体のパラメータをエンコード持っている:

url = url.replace(/"[^"]*"/g, encodeURIComponent); 
> http://localhost.com/?q=java&industry=%22IT%26web%22&location=%22New-york%20%26%20Florida%22 

それは何が必要かどう同様に、あなただけのアンパサンドを置き換えることができます。いずれの場合も

url = url.replace(/"([^"]*)"/g, function(g0){return g0.replace(/&/g, encodeURIComponent);}); 
> http://localhost.com/?q=java&industry="IT%26web"&location="New-york %26 Florida" 

を、これはすでにと衝突しますエスケープ文字を使用しているので、最適な解決策は、URLが作成されているソースで問題を修正することです。

+0

ありがとうございます。 ..うまく働いています.... –

8

あなたは使用する必要があります。

query = encodeURIComponent (query); 
+0

これは、URLにある&のすべてを置き換えます。私は行う必要はありません.iは&の後ろに&が置き換えられる必要があります。私の場合、パラメータは業界と場所です... –

+2

フルURLを作成する前に、それぞれの$ _GET変数にencodeURIComponentを使用する必要があります – bobgubko

+0

これは最初のUR1にこのパターンが含まれている場合に役立ちますか? –

関連する問題