Ajax request response 乱码解决方法

此功能已进入试用一周了,都没有问题,奇怪的是今天出现了问题??


代码如下:

AjaxRequestObj.createEqStatusParameter=function() {
    if (eqStatusArray.length < 1) {
        return;
    }
    var paramNameArray = new Array();
    var paramValueArray = new Array();
    //取状态数组
    for (var index = 0, step = eqStatusArray.length; index < step; index++) {
        var tempEqStatusObj = eqStatusArray[index];
        paramNameArray.push(tempEqStatusObj.eqCode + "`" + tempEqStatusObj.opDateTime);
        paramValueArray.push(tempEqStatusObj.status);
    }
    //分解、生成请求串。
    var paramStr = "";
    paramStr = paramStr.concat("eqStatusNames=").concat(encodeURIComponent(paramNameArray.join(","))).concat("&");
    paramStr = paramStr.concat("eqStatusValues=").concat(encodeURIComponent(paramValueArray.join("`")));
    return paramStr;
};

xmlHttpObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded")
xmlHttpObj.send(param);
客户端将参数以UTF-8方式传递给应用端,在使用此参数时直接从request中取就可以。
[Ajax接收响应信息]
直接使用forward跳转实现div局部内容变更


代码如下:

if ("doQueryRequest".equals(actParam)) {
    EquipUtils equipUtilsObj = EquipUtils.getInstance();
    //取查询参数、拼接
    equipStatusMgrObj.setEquipCondition(equipUtilsObj.createEquipFilter(request));
    equipStatusMgrObj.setEquipStatusCondition(equipUtilsObj.getEquipStatusDate(request));
    //设备信息
    List<DynaBean> equipArray = equipStatusMgrObj.queryEquip(null);
    //设备状态
    Map<String, Map<String, String>> equipStatusMapping =
        equipStatusMgrObj.queryEquipState4Map(equipArray, null);
    sessionObj.setAttribute("paginationEntity", equipStatusMgrObj.getPaginationEntity());
    sessionObj.setAttribute("equipCondition", equipStatusMgrObj.getEquipCondition());
    sessionObj.setAttribute("eqStatusCondition", equipStatusMgrObj.getEquipStatusCondition());
    request.setAttribute("equipList", equipArray);
    request.setAttribute("dateList", equipStatusMapping);
    try {
        request.getRequestDispatcher("/eq/detectPoint/InnerEqStatusRefresh.jsp").forward(request, response);
    } catch (Exception e) {
        e.printStackTrace();
    }
} else if ("getPageToolBar".equals(actParam)) {
    PaginationEntity pEntity = (PaginationEntity) sessionObj.getAttribute("paginationEntity");
    String tempStr = pEntity.getPaginationTool();
    OutputStream out;
    try {
        response.setContentType("text/html;charset=UTF-8");
        out = response.getOutputStream();
        out.write(tempStr.getBytes("UTF-8"));
        out.flush();
        out.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

因为,目前使用xmlHttpObj.responseText,responseText默认就是UTF-8所以将跳转的页面弄成UTF-8是不错的选择。至少不用担心乱码。。
[乱码原因]
之前此功能使用的是GB18030编码,到修改为止在其它客户机以及同事的机器上都非常正常,但就是我自己的机器翻页出现乱码。当我将此功能所用到的呈现文件统一使用UTF-8就ok了,也不知那xmlHttpObj触动了机器的那个神经。。查了些资料也都是说搞国际化的趋势,问题是解决了但原因没有找到!
[发现一Bug]
response.setContentType("text/html;charset=UTF8");在我机器上不抛错,但在同事的机器上就会抛错
改成response.setContentType("text/html;charset=UTF-8");一切OK..

(0)

相关推荐

  • Ajax Throws Sys.WebForms.PageRequestManagerErrorException with Response.Redirect的解决方法

    其实以前也遇到过这种错误,选择的是逃避!! 哈哈 第一步:把'NT AUTHORITY\NETWORK SERVICE' 添加到Administrator组中 我的电脑-->右键-->管理-->本地用户和组 选择"组"-->双击Administrators-->单击"添加"-->单击"高级"-->单击"立即查找"-->在下面的列表中选择Network Service用户-->

  • 关于Ajax中通过response在后台传递数据问题

    这是js代码: var System = { getHttpRequest: function(url, callback, options) { if (url.length < 0) return; var option = { url: url, type: "get", dataType: "json", cache: false, timeout: 30000, beforeSend: function(XHR) { }, complete: fun

  • ajax的 responseXML返回接受 asp

    第一个文件   index.asp <script language="javascript"> var xmlHttp = false;    //ajax使用 try {   xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {   try {     xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");   } ca

  • jquery ajax学习笔记2 使用XMLHttpRequest对象的responseXML

    摘要:本节补充ajax学习笔记1中 第二种方式:使用XMLHttpRequest对象的responseXML的方式来接受XML数据对象的DOM对象 在ajax学习笔记1中已经对准备工作和需要用到的知识做了比较详细的介绍,本节主要介绍需要修改的代码以及新增的代码 .新增一个servlet类 AJAXXMLServer.java 复制代码 代码如下: import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServle

  • ajax的responseText乱码的问题的解决方法

    关于ajax的responseText乱码的问题这个问题让我和纠结百度了好多都说是javascript的编码问题但是我的 javascript的编码是和myeclipse一样的为什么还会出现问题.最后猜测可能是服务端没有设置返回的字符的 返回类型.只需在服务端加上 复制代码 代码如下: response.setcontentType("text/html") response.setcharacterEncoding("charset")返回的字符编码是类型.

  • Ajax中responseText返回的是一个页面而不是一个值

    自己在struts2中的写好了业务逻辑用response返回的内容却是一个页面的! 然后就去了百度一下,说的是将struts2的返回值设为null(return null),这是因为struts2返回的是一个页面.如果在action中只进行业务逻辑不需要跳转页面的可以将String 类型改为void.这样返回的就不是整个页面了.

  • Ajax request response 乱码解决方法

    此功能已进入试用一周了,都没有问题,奇怪的是今天出现了问题?? 复制代码 代码如下: AjaxRequestObj.createEqStatusParameter=function() {     if (eqStatusArray.length < 1) {         return;     }     var paramNameArray = new Array();     var paramValueArray = new Array();     //取状态数组     for

  • Asp中使用JQuery的AJAX提交中文乱码解决方法

    客户端页:client.html 复制代码 代码如下: <script>     //jquery的post     $.post     (         'server.asp',         {             Act:'DoSubmit',             UserName:escape('我们'),//进行编码            WebSite:'www.jb51.net'         },         function(data)        

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

    复制代码 代码如下: $.ajax({ dataType : 'json',type : 'POST',url : 'http://localhost/test/test.do',data : {id: 1, type: '商品'},success : function(data){ } } ); 问题: 提交后后台action程序时,取到的type是乱码 解决方法: 方法一:提交前采用encodeURI两次编码,记住一定是两次 1.修改以下代码 复制代码 代码如下: data:{id:1, t

  • 基于CORS实现WebApi Ajax 跨域请求解决方法

    概述 ASP.NET Web API 的好用使用过的都知道,没有复杂的配置文件,一个简单的ApiController加上需要的Action就能工作.但是在使用API的时候总会遇到跨域请求的问题,特别各种APP万花齐放的今天,API的跨域请求是不能避免的. 在默认情况下,为了防止CSRF跨站的伪造攻击(或者是 javascript的同源策略(Same-Origin Policy)),一个网页从另外一个域获取数据时就会收到限制.有一些方法可以突破这个限制,那就是大家熟知的JSONP, 当然这只是众多

  • javaBean的基础知识及常见乱码解决方法

    javaBean的基础知识及常见乱码解决方法 乱码问题应该是做javaWeb开发人员都遇到过的问题吧,这个问题当时还影响了我学习Java的想法,甚至有过想放弃的想法,没办法,当时年轻,呵呵.其实产生乱码问题的原因有很多,解决乱码的问题也有很多,现在就一一来看一下: 出现乱码的地方大致可以分为以下三种: 1 jsp页面中 2 jsp页面之间相互传参的参数 3 与数据库中数据的存取 解决方案大致可以分为三种: 1 出现在jsp页面中,是由于没有设置jsp页面的中文字符编码.   2 出现在jsp页面

  • Spring MVC参数传递中文乱码解决方法分享

    概述 中国特色社会主义乱码问题是我们经常会碰到的问题,解决的办法有很多,本文分别介绍了GET方式和POST方式中文乱码解决方案中一劳永逸的办法. GET提交中文乱码解决方案 在乱码的Controller文件中采用下面的方法将编码转换成UTF-8 String str = new String(request.getParameter("参数名").getBytes("iso-8859-1"), "utf-8"); 修改项目所在的Tomcat服务器

  • vue-cli开发时,关于ajax跨域的解决方法(推荐)

    目的:使用vue-cli构建的项目,在开发时,想要访问后台接口获取数据,这时就会出现跨域问题. 在config/index.js中进行如下配置 [即在进行ajax请求时,地址中任何以/api开头的请求地址都被解析为目标地址,target就是你想要的后台接口地址] proxyTable: { '/api': { target: 'https://188.188.18.8', changeOrigin: true, pathRewrite: { '^/api': " } } } "` vu

  • PHP json_encode中文乱码解决方法

    相信很多人在使用Ajax与后台php页面进行交互的时候都碰到过中文乱码的问题.JSON作为一种轻量级的数据交换格式,备受亲睐,但是用PHP作为后台交互,容易出现中文乱码的问题.JSON和js一样,对于客户端的字符都是以UTF8的形式进行处理的,也就是说,使用JSON作为提交和接收的数据格式时字符都采用UTF8编码处理,当我们的页面编码和数据库编码不是采用UTF8的时候,就极容易出现中文乱码的问题.解决办法自然是在用js或者PHP处理JSON数据的时候都采用UTF8的形式. PHP5.2或以上的版

  • php ckeditor上传图片文件名乱码解决方法

    打开editor/filemanager/connectors/php目录下commands.php,找到FileUpload函数,在 复制代码 代码如下: $sExtension = substr( $sFileName, ( strrpos($sFileName, '.') + 1 ) ) ; $sExtension = strtolower( $sExtension ) ; 后添加 复制代码 代码如下: $sFileName = rand(0,100).".".$sExtensi

  • mysql导入导出数据中文乱码解决方法小结

    linux系统中 linux默认的是utf8编码,而windows是gbk编码,所以会出现上面的乱码问题. 解决mysql导入导出数据乱码问题 首先要做的是要确定你导出数据的编码格式,使用mysqldump的时候需要加上--default-character-set=utf8, 例如下面的代码: 复制代码 代码如下: mysqldump -uroot -p --default-character-set=utf8 dbname tablename > bak.sql 那么导入数据的时候也要使用-

随机推荐