jQuery ajax双编码问题

问题描述 投票:0回答:1

我试图向服务器发送一个ajax调用,读取用户的输入文本(是希伯来语,utf-8字符集),我使用了这样的方法。

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)

我找不到任何方法来克服这个问题,我希望你可以:-)

干杯,罗伊

jquery ajax urlencode
1个回答
0
投票

我认为最好的选择是使用 data 属性中的 .ajax() 选项。我在这里模拟了一个版本。http:/jsfiddle.netnrabinowitznmZra1。

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

没有一个很好的方法让jQuery显示实际的URL请求,但如果你在Firebug这样的控制台中查看,你可以看到错误信息(因为这是一个假的URL)。

GET http:/fiddle.jshell.netsearch_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(未找到)

看起来它对希伯来语文本的编码是正确的,没有你所遇到的双重编码问题。

© www.soinside.com 2019 - 2024. All rights reserved.