opac资源整合中ajax传递参数乱码

ajax应用中,最常碰到的问题便是:你从某一个编码(如utf-8)的页面上,向另一不同编码(如gb2312)的页面传递中文参数,从而出现乱码问题,最要命的是,这两边,你都无法做任何改变。

一种简单有效的解决办法是在ajax发出请求的时候,用escape()函数将参数进行编码。它返回一个包含了 charstring 内容的字符串值( Unicode 格式)。所有空格、标点、重音符号以及其他非 ASCII 字符都用 %xx 编码代替,其中 xx 等于表示该字符的十六进制数。例如,空格返回的是 “%20” 。字符值大于 255 的以 %uxxxx 格式存储。虽然有教程指出escape 方法不能够用来对统一资源标示码 (URI) 进行编码,而应该用encodeURI 和encodeURIComponent 方法来处理,但就我的使用情况来看,escape()方法有效得多。

另一种方法是引入一个第三方页面做中转,在该页面上进行编码处理。

然而,最有效的方法是:尽量避免传递中文参数!如果逼不得已要传递中文参数,那也要尽量减少传递的次数。今天花了些时间做了opac列表页面中整合apabi电子图书的初步工作,最先的思路是将title传递到检索页面,得到结果后回传相应的url给opac,然而更好的思路是回传一个标志符给opac,再在opac页面中根据标志符生成相应的url,不仅避免了回传参数的乱码问题,还大大减轻了服务器网络响应的负担。

opac

opac列表页面的资源整合不像细览页面那般轻松,很需要一些技巧。由于prototype跨域方案的局限性,无法在一个页面实现多次跨域和数据更新操作,所以目前只是实现了程序的思路,接下来转到jQuery框架,应该可以很快实现全部图书的整合。

而超星、电子期刊等的整合也将在启动,当然,重点就在于api页面的编写而不是ajax的程序了。

One thought on “opac资源整合中ajax传递参数乱码

发表评论

电子邮件地址不会被公开。 必填项已用*标注


*