2011-10-24 48 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至於使用數據屬性,好吧,我還沒有嘗試,我可能會(你有一個例子或shell我挖...?)。至於你的第二個評論,那麼,我也試過這個,但似乎只是連接到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被請求,但如果你像螢火蟲控制檯看,你可以看到錯誤消息(因爲這是一個虛假的URL):

GET 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(未找到)

它看起來像它的正確編碼的希伯來文,沒有你遇到的雙重編碼問題。