用过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

  1. <title>AJAX使用cookie传值例子</title>
  2. <script>
  3. var oDiv
  4. var xh
  5. function getXML()
  6. {
  7. setcookie($('name').value,$('val').value);
  8. oDiv = document.all.m
  9. oDiv.innerHTML = "正在装载,请稍侯......."
  10. oDiv.style.display= ""
  11. xh = new ActiveXObject("Microsoft.XMLHTTP")
  12. xh.onreadystatechange = getReady
  13. xh.open("POST","a.php",false)
  14. xh.send();
  15. }
  16.  
  17. function getReady()
  18. {
  19. if(xh.readyState==4)
  20. {
  21. if(xh.status==200)
  22. {
  23. oDiv.innerHTML = "完成"
  24. }
  25. else
  26. {
  27. oDiv.innerHTML = "抱歉,装载数据失败。原因:" + xh.statusText
  28. }
  29. }
  30. } //author : longbill www.longbill.cn
  31.  
  32. function setcookie(name,value)
  33. {
  34. var cookiestr=name+"="+value+";";
  35. var expires = "";
  36. var cookieexp=60*60*1000;
  37. var d = new Date();
  38. d.setTime( d.getTime() + cookieexp);
  39. expires = "expires=" + d.toGMTString()+";";
  40. document.cookie = cookiestr+ expires;
  41. }
  42. function $(a)
  43. {
  44. return document.getElementById(a);
  45. }
  46. </script>
  47.  
  48. <body>
  49. AJAX使用cookie传值例子:<br>
  50. <form name=myform>
  51. name:<input id=name value="变量名甚至可以是中文" size=20><br>
  52. value:<input type=text size=20 id=val value=这里><br>
  53. <input onclick="getXML()" type="button" value="送出数据">
  54. <input onclick="if(xh && xh.responseText) {alert(xh.responseText);}" type="button" value="显示返回结果"><br>
  55. <div id=m bgcolor=blue>在此显示状态</div>
  56. <input type=button onclick="alert(document.cookie)" value=显示本地COOKIE>
  57. </form>

服务器端代码 a.php

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

AJAX乱码解决新方法的更多相关文章

  1. ajax乱码解决汇总

    ajax乱码解决总结第一,javascript沿用java的字符处理方式,内部是使用unicode来处理所有字符的,第二,utf-8是每个汉字(unicode字符)用3个字节来存储.第三,用utf-8 ...

  2. ajax乱码解决总结

    第一,javascript沿用java的字符处理方式,内部是使用unicode来处理所有字符的,第二,utf-8是每个汉字(unicode字符)用3个字节来存储.第三,用utf-8来send数据是不会 ...

  3. 爬虫爬数据时,post数据乱码解决的方法

    近期在写一个爬虫,目标站点是:http://zx.bjmemc.com.cn/.可能是为了防止被爬取数据,它给自身数据加了密. 用谷歌自带的抓包工具也不能捕获到数据. 于是下了Fiddler.     ...

  4. PHP创建文件命名中文乱码解决的方法

    PHP创建文件命名中文乱码解决的方法 <pre>iconv('utf-8', 'gbk', $dir); </pre> 因为系统环境是gbk 所以里面的字符也要gbk 编码一致 ...

  5. Rhythmbox中文乱码解决的方法

    转自:http://hi.baidu.com/morgensonne/item/3470aef58747abde6325d2d9 今天在网络上找到了一个比較好的解决Rhythmbox中文乱码的问题的方 ...

  6. 使用java连接MySql,中文乱码解决的方法

    排查MySql中文乱码的问题 1.在cmd中启动MySql. 打开命令提示符cmd,输入"mysql -uusername -ppassword",回车,就可以连接到数据库. 如输 ...

  7. eclipse中文乱码修改新方法

    方法背景:想看别人的JAVA项目,导入eclipse后出现中文乱码,在设置了所有的工作空间都为UTF-8以后都没有用,并且项目Resource选项没有GBK选项,或统一选择GBK后会使其他项目出现中文 ...

  8. MySQL数据库插入中文乱码解决方法

    在mysql数据库中,插入中文数据时,会出现乱码的现象. 我的测试方法: 首先用Navicat for MySql 插入一行数据,带有中文的. 再用mysql命令行来查看插入的数据,看是否出现乱码. ...

  9. jquery的ajax()函数传值中文乱码解决方法介绍

    jquery的ajax()函数传值中文乱码解决方法介绍,需要的朋友可以参考下 代码如下: $.ajax({ dataType : ‘json', type : ‘POST', url : ‘http: ...

随机推荐

  1. JMeter学习笔记--JMeter常用测试元件

    JMeter测试计划有一个被称为“函数测试模式”的选项,如果被选择,它会使Jmeter记录来自服务器返回的每个取样的数据.如果你在测试监听器中选择一个文件,这个数据将被写入文件.如果你尝试一个较小的测 ...

  2. Linux内核同步 - Read/Write spin lock

    一.为何会有rw spin lock? 在有了强大的spin lock之后,为何还会有rw spin lock呢?无他,仅仅是为了增加内核的并发,从而增加性能而已.spin lock严格的限制只有一个 ...

  3. Python rpartition() 方法

    描述 Python rpartition() 方法用来根据指定的分隔符将字符串进行分割. 如果字符串包含指定的分隔符,则返回一个3元的元组,第一个为分隔符前面的子字符串,第二个为分隔符本身,第三个为分 ...

  4. 支持向量机(SVM):应用实例

     SVM 应用实例(人脸识别): from __future__ import print_function from time import time import logging import m ...

  5. php - 时间操作

    ini_set('date.timezone','Asia/Shanghai'); http://www.w3school.com.cn/php/func_date_strtotime.asp str ...

  6. linux权限详解

    一个用户.一个组 我们来看一看 Linux 权限和所有权模型.我们已经看到每个文件属于一个用户和一个组.这正是 Linux 中权限模型的核心.您可以在 ls -l 清单中查看用户和组: $ ls -l ...

  7. 《Effective Java》读书笔记五(枚举和注解)

    No30 用enum代替int常量 一:综述 int枚举模式,示范: // The int enum pattern - severely deficient! public static final ...

  8. Python中的break和continue的使用方法

    一.continue的使用方法(结束当前的循序,进行下一个数的循环) # *************************************************************** ...

  9. 怎样用modelsim做后仿真

    摘要: 怎样用modelsim做后仿(编译工具采用quatus) step1:在qurtus改变编译选项:     assignments->EDA tool setting:选择verilog ...

  10. 详解设计模式在Spring中的应用---转载

    Spring作为业界的经典框架,无论是在架构设计方面,还是在代码编写方面,都堪称行内典范.好了,话不多说,开始今天的内容. spring中常用的设计模式达到九种,我们一一举例: 第一种:简单工厂 又叫 ...