2011-10-24 8 views
0

ここにコードを入力してください。ユーザーからの入力テキストを読むサーバーにajaxコールを送信しようとしています(それは、ヘブライ語のUTF-8文字セットです)。 私はこのようなものを使用します。jQuery ajaxのダブルエンコーディングの問題

my_url = some_url + textinput 
my_url = encodeURI(my_url) 

私が見encodeURI関数の後に、ヘブライ語の部分はそのように見えるということである問題:%D7%9E%D7%9C%D7%95%D7%9F(結構です)。私は、jQueryのコールを使用します。

$.ajax({ 
      url: search_url, 
     contentType: "application/json; charset=utf-8", 
      dataType: 'json', 
      error:errorData, 
      success:getSearchResults 
     }); 

を、私はそれが再び、このようなコード化されたように、サーバでそれがそれぞれ「%」記号は今や25%(パーセント記号のUTF-8表現)であることに見えることを確認し、私のヘブライ語の部分は以下のようになります。 %25D7%259E%25D7%259C%25D7%2595%25D7%259F(各 "%" => 25%)

私は私はあなたがすることを願って、これを克服するために、とにかく見つけることができませんでした:-) Cheeers、 ロイ

+0

これを正しく理解すれば、実際のURLにGETパラメータがエンコードされます。あなたの '.ajax()'オプションに 'data'属性を使わない理由はありますか? – nrabinowitz

+0

また、最初にエンコードする必要があるのでしょうか? '.ajax()'があなたのためにやっているようです。 – nrabinowitz

+0

@nrabinowitzデータ属性の使用に関しては、まだ試していませんでしたが、おそらく(私はあなたが掘り下げた例やシェルを持っていますか?)。あなたの2番目の発言については、まあ、私もこれを試したが、それはちょうどヒブリーの部分をURLに連結して正しくエンコードされていないようだ。 – user973245

答えて

0

私はここでの最適なオプションは、.ajax()オプションでdata属性を使用することです。私はここにバージョンアップ嘲笑しました:http://jsfiddle.net/nrabinowitz/nmZra/1/

$.ajax({ 
    url: '/search_results/', 
    data: { search: text }, 
    contentType: "application/json; charset=utf-8", 
    dataType: 'json', 
    success: $.noop 
}); 

あり、要求されているjQueryの実際のURLを表示するために得るための素晴らしい方法ではありませんが、Firebugのようなコンソールで見れば、あなたがエラーを見ることができますメッセージ(これは偽のURLであるため):

は、それはあなたが持っている二重エンコードの問題なく、正しくヘブライ語のテキストをコードているように見えますhttp://fiddle.jshell.net/search_results/?search=%D7%91%D7%92%22%D7%A5+%D7%9C%D7%9E%D7%AA%D7%9E%D7%97%D7%99%D7%9D%3A+%D7%97%D7%96%D7%A8%D7%95+%D7%9C%D7%94%D7%99%D7%93%D7%91%D7%A8%D7%95%D7%AA+%D7%A2%D7%9D+%D7%94%D7%90%D7%95%D7%A6%D7%A8 404(FOUND NOT)

をGET。