AJAX乱码解决新方法

 更新时间:2007年07月21日 00:00:00   作者:  
用过AJAX的朋友肯定知道javascript是使用UTF-8国际编码,即每个汉字用3个字节来存储,但是这就造成了用AJAX来send数据的时候出现乱码。 
   有一种解决办法就是使用encodeURIComponent加上修改 Content-Type 为 application/x-www-form-urlencoded" 来把数据统一编码成 url 格式,但是这样做有一个弊端,使用php的urldecode根本不能得到正确的文字。 
   另一种方法就是通过vbscript 的写的函数把数据转成gb2312格式的,我个人觉得这种方法比较好。有兴趣的朋友可以到网上去查一下。 
   今天突发奇想,AJAX调用的时候会不会发送cookie 呢?马上写了一个程序测试一下,果然能,这样就可以在调用ajax之前,先把数据通过javascript写到cookie里,然后再send就可以将cookie里的数据发送出去了,太爽了!! 

演示地址:http://cn5.cn/ajax/ajax12.htm 

客户端代码 ajax.htm 
复制代码 代码如下:

<title>AJAX使用cookie传值例子</title>  
<script>  
var oDiv         
var xh                
function getXML()  
{  
    setcookie($('name').value,$('val').value);  
    oDiv = document.all.m  
    oDiv.innerHTML = "正在装载,请稍侯......."  
    oDiv.style.display= ""  
    xh = new ActiveXObject("Microsoft.XMLHTTP")  
    xh.onreadystatechange = getReady  
    xh.open("POST","a.php",false)  
    xh.send();  
}  

function getReady()  
{  
    if(xh.readyState==4)  
    {  
        if(xh.status==200)  
        {  
            oDiv.innerHTML = "完成"  
        }  
        else  
        {  
             oDiv.innerHTML = "抱歉,装载数据失败。原因:" + xh.statusText  
        }  
  }  
} //author : longbill      www.longbill.cn  

function setcookie(name,value)  
{  
    var cookiestr=name+"="+value+";";  
    var expires = "";  
    var cookieexp=60*60*1000;  
    var d = new Date();  
    d.setTime( d.getTime() + cookieexp);  
    expires = "expires=" + d.toGMTString()+";";  
    document.cookie = cookiestr+ expires;  
}  
function $(a)  
{  
    return document.getElementById(a);  
}  
</script>  

<body>  
AJAX使用cookie传值例子:<br>  
<form name=myform>  
name:<input id=name  value="变量名甚至可以是中文" size=20><br>  
value:<input type=text size=20 id=val value=这里><br>  
<input onclick="getXML()" type="button" value="送出数据">  
<input onclick="if(xh && xh.responseText) {alert(xh.responseText);}" type="button" value="显示返回结果"><br>  
<div id=m bgcolor=blue>在此显示状态</div>  
<input type=button onclick="alert(document.cookie)" value=显示本地COOKIE>  
</form> 

服务器端代码 a.php 
复制代码 代码如下:

<?  
header("Content-type: text/html;charset=GB2312");  
echo "以下是您送出的所有COOKIE变量及其值\n";  
print_r($_COOKIE);  
?>

相关文章

  • AJAX显示加载中并弹出图层遮挡页面的实现示例

    AJAX显示加载中并弹出图层遮挡页面的实现示例

    大家都知道AJAX的请求是异步的,这种异步的机制给我们带来了体验上的优化,但是同时我要求我们有更完善的思维去处理一个业务。当用户请求后长时间没有回应是一种非常不好的用户体验,所以我们可以在请求后利用AJAX显示加载中并弹出图层遮挡页面,下面来看看实现方法。
    2016-12-12
  • Ajax方式提交带文件上传的表单及隐藏iframe应用

    Ajax方式提交带文件上传的表单及隐藏iframe应用

    一般的表单都是通过ajax方式提交,所以碰到带文件上传的表单就比较麻烦,基本原理就是在页面增加一个隐藏iframe,然后通过ajax提交除文件之外的表单数据,感兴趣的你不妨了解一下,或许本文对你有所帮助
    2013-01-01
  • Ajax风格的一款网页Loading效果

    Ajax风格的一款网页Loading效果

    本篇文章主要是对Ajax风格的一款网页Loading效果的实例代码进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-02-02
  • 使用$.getJSON实现跨域ajax请求示例代码

    使用$.getJSON实现跨域ajax请求示例代码

    getJSON调用并获取远程的JSON字符串,将其转换为JSON对象,如果成功,则执行回调函数,下面有个不错的示例,需要的朋友可以参考下
    2013-11-11
  • ajax 实现微信网页授权登录的方法

    ajax 实现微信网页授权登录的方法

    这篇文章主要介绍了ajax 实现微信网页授权登录的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • Ajax实现跨域访问的三种方法

    Ajax实现跨域访问的三种方法

    本文给大家介绍了ajax实现跨域访问的3种解决方案,非常的实用,个人比较推荐第三种,小伙伴们可以着重看下。
    2015-06-06
  • 一个AJAX类代码

    一个AJAX类代码

    以前写的一个AJAX类,兼容性还不错,简单易用,记下了方便以后找 :)
    2010-01-01
  • 基于ajax实现验证码功能

    基于ajax实现验证码功能

    这篇文章主要为大家详细介绍了基于ajax实现验证码功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • AJAX页面状态保持思路详解

    AJAX页面状态保持思路详解

    AJAX流行的时候,很多信息为AJAX异步请求,比如:点击、翻页等。通常这种情况你一刷新浏览器,当前页面就会重置到初始状态。更不用说把看到的信息url发给好友了。下面给大家分享实现思路,一起看看吧
    2017-03-03
  • jQuery Ajax的readyState和status的区别和使用详解

    jQuery Ajax的readyState和status的区别和使用详解

    在前几篇分析了jquery的ajax异步和同步,以及异常的一些处理,感觉还没有把ajax的readyState和status说清楚.今天就来说说ajax状态的那点事,非常不错,对ajax readystate和status区别和使用感兴趣的朋友一起学习吧
    2017-03-03

最新评论