首页 » Asp, Javascript » 阅读文章

jQuery ajax post 中文 乱码 的解决方案探讨

2008年12月6日

Asp 和 Php,本身对接收数据的编码处理能力,都是比较弱的, 而Asp更甚,可以说是弱到极点了

目前,js框架(framework)中,jQuery算是比较火的了,已经受到了微软的青睐,在VS2008里,已经默认加入了jQuery的智能提示

然而,目前的Asp还远未退出历史舞台,而Php更是有自己的一片天空,所以,解决本标题的问题,还是很有意义的 :)

第一部分: ajax pull

ajax 只是用来 Pull 数据的时候,只要做到两点即可:

(1) 在 目标页面中, 指定与客户端相同的编码

(2) 将客户端页面的编码 设置成 与目标页面编码一致

 

第二部分:  ajax push

在使用ajax POST数据的时候,默认是以 UTF-8 编码发送的,如果目标页面是非UTF-8编码,则unicode字符会出问题

利用 jQuery 的 ajax push 数据, 表单数据的提交,通常下面的两种类似写法:

(1) 自己组合字段和值

var toUrl = '接收数据的页.asp';
var method = 'POST';
var paramSerial = 'name1=值1&name2=值2&name3=值3';
$.ajax({
             type: method,
             url:  toUrl,
             data: paramSerial
 });

(2) 利用 jQuery 的 serialize() 功能, 自动生成 POST 的组合串

var toUrl = '接收数据的页.asp';
var method = 'POST';
var paramSerial = $('form').serialize();
$.ajax({
          type: method,
          url:  toUrl,
          data: paramSerial
});

于 (1) 的情况,解决起来相对简单,只要将各个值,在提交之前, 用 escape 编码一下即可,如下:

var toUrl = '接收数据的页.asp';
var method = 'POST';
var paramSerial = 'name1=' + escape('值1') + '&name2=' + escape('值2');
$.ajax({
             type: method,
             url:  toUrl,
             data: paramSerial
 });

经过 escape 编码后, 上面的 paramSerial 的 UTF-8 编码结果 和 paramSerial 本身是相同的,这样,在目标页面,就不用费心去做编码转换了,需要做的,只是 unescape 一下, 而 Asp 本身是支持 escape 和 unescape 的, 在 后台Asp页面中,处理接收到的数据,如下:

<%
	Response.Charset = "GB2312"
        Dim n1, n2
	n1 = unescape(Request.Form("name1"))
	n2 = unescape(Request.Form("name2"))
%>

于 (2) 的情况, 比较麻烦了, 如下:

通过查看 jQuery 的源代码,我们可以看到,serialize 的内部实现逻辑是通过 jQuery.param 结合 serializeArray() 来实现的, 见下图:

通过 param 的实现方式,我们可以看到, serialize 实际是对 表单元素的 name 和 value 做了

encodeURIComponent 操作

经过上面的转换, 在经过 UTF-8 编码, 最后的结果是面目全非了 

建议大家,采用 (1) 的方式为好。

 

调试AJAX,推荐大家用 firefox + firebug 的超强组合

和别人一起分享吧:
  • Google Bookmarks
  • QQ书签
  • 饭否
  • 校内网
  • 豆瓣九点
  • 嘀咕
  • 365Key网摘
  • POCO网摘
  • 豆瓣
  • 开心网
  • 新浪ViVi
  • 百度搜藏
  • email
  • Add to favorites
  • Facebook
  • Live
  • 收客
  • Twitter
  • del.icio.us
  • PDF
  • Yigg
  • Print
  • Digg
  • Haohao
  • RSS
  • Yahoo! Bookmarks

本文作者:三角猫 DeltaCat
文章出处:真有意思网(http://www.zu14.cn)
引用地址:点击复制本文的 Trackback Url
文章链接:http://www.zu14.cn/2008/12/06/asp_jquery_ajax/ [复制] (转载请注明出处及链接)

Asp, Javascript , , , , , , , ,

上一篇 »:

下一篇 »:
  1. 2009年03月15日 09:10 | #1

    ok.need java?

  2. 2009年02月02日 07:48 | #2
  3. 2009年02月01日 22:40 | #3

    Nice site really!

  4. 2008年12月07日 20:29 | #4

    猫哥测试了,我们就照用了啊。

  1. 目前还没有任何 trackbacks 和 pingbacks.

 

Related Posts with Thumbnails