Jquery:ajax post 和编码

标签 jquery

我无法理解为什么我无法从服务器答案中获得正确的 ISO-8859-1 字符集。由于这是一项针对遗留代码的工作,我几乎无法更改页面上的字符集编码。

我使用 JQuery 调用

$.post("server-side-code", {t:ctext, i:ioff, sid:sessionid},  
    function(data, status) {            
       $('#chk').append(data); 
     });

发布使用 javascript 创建的文本区域值:

<form accept-charset='ISO-8859-1' method='post'>
<textarea cols='40' rows='8' id='commento'></textarea><br>
<input type='button' value='invia' id='submit'></form>

处理请求的服务器端脚本在其最顶部声明​​:

text/html; charset=ISO-8859-1

所以,老实说,我不知道在编码方面我还应该声明什么。尽管如此,当将服务器答案放置在 HTML 元素中时,重音字符“àèéìòù”会反弹为:“à à¤à²�”

源文件保存为ascii。尝试执行此操作以对要发布的变量进行基本的 Html 编码并不能解决问题:

ctext = escapeHTML(ctext);

function escapeHTML (str)
{
   var div = document.createElement('div');
   var text = document.createTextNode(str);
   div.appendChild(text);
   return div.innerHTML;
}; 

有什么想法吗?

谢谢!

最佳答案

我现在有一个更好的解决方案。发布和获取作品都非常完美。 我正在使用 tomcat,默认情况下它处理 ISO 8859 的东西。

网页属性:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

头部内网页的字符集。

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

现在,我所有的参数都用转义函数转义了,我之前提供过这个解决方案。

(function($) {$.fn.escape = function() {
    return escape(this.val());};})(jQuery);

现在,当发送 ajax 请求时,我将 contentType 设置为:

contentType : "application/x-www-form-urlencoded; charset=iso-8859-1"

最后,当在 servlet 或任何接收器接收参数时,我使用它得到一个解码后的参数。

    public String getHttpParameter(String name) throws Exception {
    String value = this.getHttpRequest().getParameter(name);
    return value == null || value.isEmpty() ? value : URLDecoder.decode(value,"ISO-8859-1");
}

POST 和 GET 在 IE 7 和 8、SAFARI、CHROME 和 FIREFOX 中完美运行。

关于Jquery:ajax post 和编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/965150/

相关文章:

jquery - 在 jquery mobile 中使用 for 循环将 <li> 添加到 <ul>

jQuery.Scrollable 插件

javascript - 使用 Tempus Dominus 的日期时间选择器防止输入字段上的移动键盘

javascript - 等待多个 $.getJSON 完成

jquery - css 和 jQuery 之间关于滚动条和右侧的行为不一致 :0px in Firefox

javascript - 单击后意外重复 ajax 调用

jquery - 强制tinymce通过回车键输入换行符而不是创建一个新段落

jquery - CSS 中 "class"目标的功能/用途是什么?

javascript - 从 Fullcalendar 的 eventClick 信息访问子元素

javascript - Odoo POS javascript 变化