当前位置: 主页 > 日志 > PHP >

php自学笔记-php与Ajax交换数据疑难问题解决

// by redice 2009.7.7

学习一种新技术的最快捷的方法是什么?通过一个实际项目来学习它。


问题一:Ajax采用Post方式提交数据,但在php程序中无法获取到。

苦苦查询终于找到了解决方案,在xmlHttp.open后一定要设置“Content-Type”包头,如下:

xmlHttp.setRequestHeader(Content-Type, application/x-www-form-urlencoded); 


问题二:Ajax返回数据为乱码。

解决方案:

(1):GB2312的页面,在使用Ajax传递中文数据时,数据会出现乱码。

此时在处理页面头部加上指定编码的语句,就可以正常发送了。

php
header(Content-type: text/html;charset=GB2312);

如果是asp:
Response.AddHeader "Charset","GB2312"


(2):GB2312的页面,向ajax发送中文数据时,数据先用JS的escape转换一下。
如果是UTF8页面,需要用encodeURIComponent来转换。


问题三:Ajax提交中文数据,php程序在服务器端获取到乱码。

解决方案

Ajxa采用UTF-8编码方式发生数据。对于中文要现在js中进行URL编码(使用encodeURI函数),
在php程序中要先对获取到的数据进行URL解码(使用urldecode函数),然后对数据从UTF-8转换为gb2312(我项目中网

页编码采用的是gb2312)。
例如:$myparam=iconv("UTF-8","GB2312",urldecode($_REQUEST[param]));

[日志信息]

该日志于 2009-07-07 19:00 由 redice 发表在 redice's Blog ,你除了可以发表评论外,还可以转载 “php自学笔记-php与Ajax交换数据疑难问题解决” 日志到你的网站或博客,但是请保留源地址及作者信息,谢谢!!    (尊重他人劳动,你我共同努力)
   
验证(必填):   点击我更换验证码

redice's Blog  is powered by DedeCms |  Theme by Monkeii.Lee |  网站地图 |  本服务器由西安鲲之鹏网络信息技术有限公司友情提供

返回顶部