IE浏览器与FF浏览器关于Ajax传递参数值为中文时的区别实例分析

本文实例讲述了IE浏览器与FF浏览器关于Ajax传递参数值为中文时的区别。分享给大家供大家参考,具体如下:

前面介绍了《Javascript基于AJAX回调函数传递参数》,这里主要来分析一下ajax传递中文参数过程中针对不同浏览器的乱码处理方法。

Ajax传递参数为中文时出现乱码,我遇到的情况是:

1.我的数据库连接 编码为 GB2312,latin1_swedish_ci

2.php 文件编码格式为 UTF-8,浏览器显示编码为 : UTF-8

3.我的页面显示方式为两种:

一)页面加载时自动加载,每隔一秒刷新一次

二)点击一个分机组名称时,获得该分机组的相应的成员卡片信息

4.对于第一种情况的处理:

control.php页面上获得session:

读取数据库的内容:

line 53:

代码如下:

$grouparr[] = iconv("GB2312","UTF-8",$g[0]); //数据库内容转换为 UTF-8,这样能正常显示页面上的中文

line106:

代码如下:

$_SESSION['dispatchgroup'] = iconv("UTF-8","GB2312",$grouparr[0]);//将转换的中文修改为 GB2312,用于在 dispatchinfo.php 文件中获得查询的条件值,获得GB2312编码的值。

dispatchinfo.php: line 291

if($_SESSION['dispatchgroup']){
  $groupaddressinfo = function_listaddressesbygroup($_SESSION['dispatchgroup'],1,$value,0,$_SESSION['dispatchexten'],$_SESSION['dispatchgrouppage']);
  //2013-5-17$groupaddressinfo = "listaddressesbygrouptype|0|LocalExt|1|12|1,,,801,空闲,,|1,,,802,不在线,,|1,,,803,空闲,,|1,,,804,不在线,,|,,,805,不在线,,|,,,806,不在线,,|,,,807,不在线,,|,,,808,不在线,,|,,,809,不在线,,|,,,810,不在线,,|5,餐厅,,811,10.1.6.189;连接|6,,,812,user2;断开|";
}

此种情况IE和FF,均能正常显示。

5.对于第二种情况:

点击“分机组”名称,获得点击的分机组的中文名称,通过Ajax 传递到 dispatchinfo2.php 文件中进行处理,修改前,js点击事件后获得的中文名称,alert均为正常值【格式为UTF-8】,此时数据库中的内容为GB2312,这时,在经过 iconv转码就会出现错误。

因为只对于第一种情况,我在处理时采用转换编码的方式

代码如下:

$groupname = iconv("GB2312","UTF-8",$groupname);

此时再次编码就会出现错误了,

解决方法:

JS 的异步提交处理:

checkval();
var ajax = InitAjax();
var url = "dispatchinfo2.php?"+arges;
//2013-08-21 limx 中文编码问题
url = encodeURI(encodeURI(url));
ajax.open('GET',url,true);

dispatchinfo2.php

$groupname = urldecode($groupname);
$groupname = iconv("utf-8","GB2312",$groupname);

四行代码完美解决中文编码的问题。

因为AJAX发送数据都是采用UTF-8编码的方式发送的,所以要在服务器 端进行编码转换(我这里页面是采用GB2312编码的,如果是采用UTF-8的话应该不会有这步的问题),所以我在服务器端进行了UTF-8转 GB2312

希望本文所述对大家ajax程序设计有所帮助。

(0)

相关推荐

  • jquery post方式传递多个参数值后台以数组的方式进行接收

    在用jquery的post方式传递多个值时,在后台页面可以用数组形式接收 如下所示 复制代码 代码如下: <script type="text/javascript"> $(function () { timestamp = 0; $("#chatform").submit(function () { var message = $("#msg").val(); var name = $("#author").va

  • Jquery和JS用外部变量获取Ajax返回的参数值的方法实例(超简单)

    以前只知道在返回data区域赋给html控件值,后来发现,原来直接定义变量就行了.   复制代码 代码如下: var csj_data; $.ajax       ({           cache: false,           async: false,           type: 'post',           data: { aaa: "1" },           url: "../handle/Ladder_Fee_Code.ashx?ajaxac

  • jQuery Ajax向服务端传递数组参数值的实例代码

    在使用MVC时,向服务器端发送POST请求时有时需要传递数组作为参数值 下面使用例子说明,首先看一下Action [HttpPost] public ActionResult Test(List<string> model) { return Json(null, JsonRequestBehavior.AllowGet); } 方式一,构造表单元素,然后调用serialize()方法得到构造参数字符串 @{ Layout = null; } <!DOCTYPE html> <

  • IE浏览器与FF浏览器关于Ajax传递参数值为中文时的区别实例分析

    本文实例讲述了IE浏览器与FF浏览器关于Ajax传递参数值为中文时的区别.分享给大家供大家参考,具体如下: 前面介绍了<Javascript基于AJAX回调函数传递参数>,这里主要来分析一下ajax传递中文参数过程中针对不同浏览器的乱码处理方法. Ajax传递参数为中文时出现乱码,我遇到的情况是: 1.我的数据库连接 编码为 GB2312,latin1_swedish_ci 2.php 文件编码格式为 UTF-8,浏览器显示编码为 : UTF-8 3.我的页面显示方式为两种: 一)页面加载时自

  • PHP下ajax跨域的解决方案之window.name实例分析

    本文实例讲述了PHP下ajax跨域的解决方案之window.name.分享给大家供大家参考,具体如下: 原理核心:window对象的name属性是一个很特别的属性,当该window的location变化,然后重新加载,它的name属性可以依然保持不变. 依此原理,我们可以在页面A中用iframe加载其他域的页面B,而页面B中用JavaScript把需要传递的数据赋值给 window.name,页面A的iframe加载完成之后,页面A修改iframe的地址,将其变成同域的一个地址,然后就可以读出w

  • Ajax异步提交数据返回值的换行问题实例分析

    本文实例分析了Ajax异步提交数据返回值的换行问题.分享给大家供大家参考,具体如下: 前面分析介绍了<Javascript基于AJAX回调函数传递参数>及<IE浏览器与FF浏览器关于Ajax传递参数值为中文时的区别>,学习了ajax回调函数传参与针对不同浏览器处理中文乱码问题的方法.这里就来分析一下ajax异步提交返回值中换行问题的处理技巧. 背景介绍: 需要实现的功能是:在下拉框中选择分类,提交到PHP根据选择的分类返回该分类下的成员名称,返回值各成员姓名以换行的形式显示到tex

  • jQuery使用ajax传递json对象到服务端及contentType的用法示例

    本文实例讲述了jQuery使用ajax传递json对象到服务端及contentType的用法.分享给大家供大家参考,具体如下: 0.一般情况下,通过键值对的方式将参数传递到服务端 0.1 客户端代码: $.ajax({ url: 'TestHandler.ashx', type: 'post', data: { name: "admin", age: 10 }, dataType: 'text', success: function (data) { alert(data); } })

  • IE、FF浏览器下修改标签透明度

    复制代码 代码如下: // FF 浏览器 document.getElementById("IMG1").style.opacity = "0.5"; // IE 浏览器 document.getElementById("IMG1").style.filter = 'alpha(opacity=50)'; W3C标准的写法跟FF浏览器一样.

  • AJAX 常用函数创建XMLHTTP对象,区别IE,Mozilla浏览器

    AJAX 常用函数创建XMLHTTP对象,区别IE,Mozilla浏览器的函数,网上有很多创建XMLHTTP对象,区别IE,Mozilla浏览器的函数,这个比较不错,大家可以直接拿用了 复制代码 代码如下: function getRequest() {          http_request = false;          if (window.XMLHttpRequest) {               //对于Mozilla﹑Netscape﹑Safari等浏览器,创建XMLHt

  • jquery在IE、FF浏览器的差别详细探讨

    1.今天突然想到了jquery好处时间没有用到了,就练习了一下,谁知道,就碰到了jquery在IE,FF浏览器差别的问题了,好了废话也不多说了,就将一下碰到的问题吧 2.大部分使用过jquery的都知道,在FF上面浏览的效果是刚刚的,但是这些刚刚的效果,在IE上面运用的效果差强人意的. 3.今天练习的一个效果是这样的 就是点击个个颜色,然后使得页面的背景颜色变成同样的颜色 4.上图中的效果使用简单的代码就可以完成了,而且在IE,FF中的效果是同样的,这里就只贴出jquery中的代码了,非常的简单

  • FF浏览器和IE下载文件乱码问题的解决方法

    下载在FF浏览器下出现了下列问题  但是在其他浏览器(IE,Chrome....)上没有出现这个问题, 需要写一个Utitl类管理下 复制代码 代码如下: package com.sencloud.dh.core.utils; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import javax.servlet.http.HttpServletRequest; /** * 对文件流输出下载的中文

  • Windows取代浏览器,还是浏览器取代Windows 的分析

    10多年以来,萦绕在M$公司高管头脑中挥之不去的一个梦魇就是:有一天,也许浏览器将会取代Windows,Windows本身将不再重要.没有人再真正需要Windows,他们只需要一个浏览器. 当10多年前Netscape的浏览器首次支持Java Applet,曾经有预言家说一个新的时代要开始了,在这个新的时代中,所有的应用都是基于浏览器建造的,Windows将不再重要.M$感到了巨大的威胁,动用他们所有的力量,采取各种合法和非法的手段,包括免费下载.操作系统捆绑等等,花费了大约3年时间,彻底消灭了

  • 用ajax传递json到前台中文出现问号乱码问题的解决办法

    我使用的Springmvc,在controller层传输一个json到前台,后台显示没问题,中文正常显示而到了前台 中文就变成了问号. 后来发现,因为在controller中返回json用了@ResponseBody,而spring源码中@ResponseBody 的实现类发现其默认的编码是 iso-8859-1,而项目用的编码为utf-8,所以传中文会出现乱码. 这里我使用了注解来解决: @RequestMapping(value="/echarts.do", produces =

随机推荐