AJAX乱码解决新方法

所属分类: 网络编程 / AJAX相关 阅读数: 877
收藏 0 赞 0 分享
用过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的出现极大的改变了Web应用客户端的操作模式,它使的用户可以在全心工作时不必频繁的忍受那令人厌恶的页面刷新。
收藏 0 赞 0 分享

揭开AJAX神秘的面纱(AJAX个人学习笔记)第1/5页

写这个学习笔记,只是记载一下自己的学习经过和体会,把一些学习重点记录下来,以备今后的巩固复习及应用,很多知识点没有详细介绍,所以并不完全适用于初学者,如果你是初学者,最好选择一本AJAX学习的书籍,然后与这篇学习笔记对照学习,效果会更好。
收藏 0 赞 0 分享

Ajax Control Toolkit 34个服务器端控件第1/2页

Ajax Control Toolkit 34个服务器端控件,想要学习ajax的朋友可以参考下。
收藏 0 赞 0 分享

Ajax 核心框架函数及例子

最近学习js,肯定会学到ajax中的东西,所以,看到比较好的ajax函数,免不得要贴出来,供大家参考。这个函数摘录自john resig的书中。
收藏 0 赞 0 分享

AJAX 进度条实现代码

AJAX 进度条实现代码,基于java后来,大家可以学习下。
收藏 0 赞 0 分享

一款经典的ajax登录页面 后台asp.net

众所周知,用服务器控件做页面的登录窗体时很简单的,但是页面的多次回传让我们感觉到头痛,一直刷新页面的感觉非常之不好,其实用ajax的局部刷新功能可以完全解决这个问题,制作出来的页面有很好的交互性,而且是局部刷新,节省网络资源。
收藏 0 赞 0 分享

ajax 调用后台方法大家可以讨论下

我曾使用过的三种调用后台的代码,需要的朋友可以参考下,如果发现更好的可以留言。
收藏 0 赞 0 分享

5款Ajax 文件上传控件

如果你的网站含有文件上传功能,那可以使用本文介绍的5款Ajax文件上传控件,提升用户体验。要知道,上传文件总是个痛苦的过程,要消除不太现实,但至少如果你为减少用户的痛苦努力了,那用户也会喜欢你的网站的。
收藏 0 赞 0 分享

AJAX集天气\IP\多国语言翻译MP3(可同步LRC歌词显示)\万年历查询通

AJAX集天气\IP\多国语言翻译MP3(可同步LRC歌词显示)\万年历查询通
收藏 0 赞 0 分享

AJAX 缓存问题的两种解决方法(IE)

ajax 清除缓存的两种方法
收藏 0 赞 0 分享
查看更多