Ajax request response 乱码解决方法

所属分类: 网络编程 / AJAX相关 阅读数: 1101
收藏 0 赞 0 分享
此功能已进入试用一周了,都没有问题,奇怪的是今天出现了问题??
复制代码 代码如下:

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..
更多精彩内容其他人还在看

AjaxSubmit()提交file文件

这篇文章主要介绍了AjaxSubmit()提交file文件的实例讲解,非常不错,具有参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

基于Blod的ajax进度条下载实现示例代码

本篇文章主要介绍了基于Blod的ajax进度条下载实现示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

使用Ajax、json实现京东购物车结算界面的数据交互实例

这篇文章主要介绍了使用Ajax、json实现京东购物车结算界面的数据交互实例,非常不错,具有参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

用Promise解决多个异步Ajax请求导致的代码嵌套问题(完美解决方案)

这篇文章主要介绍了用Promise解决多个异步Ajax请求导致的代码嵌套问题(完美解决方案),需要的朋友可以参考下
收藏 0 赞 0 分享

Ajax 传递JSON实例代码

虽然ajax全称是asynchronous javascript and XML。但目前使用ajax技术时,传递JSON已经成为事实上的标准。这篇文章主要介绍了Ajax 传递JSON实例代码,需要的朋友可以参考下
收藏 0 赞 0 分享

ajax用json实现数据传输

本文主要介绍了ajax用json实现数据传输的方法,具有很好的参考价值。下面跟着小编一起来看下吧
收藏 0 赞 0 分享

Ajax中post方法直接返回以0开头数字出错问题分析

这篇文章主要介绍了Ajax中post方法直接返回以0开头数字出错问题分析,需要的朋友可以参考下
收藏 0 赞 0 分享

ajax+springmvc实现C与View之间的数据交流方法

下面小编就为大家带来一篇ajax+springmvc实现C与View之间的数据交流方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Spring MVC前端与后端5种ajax交互方法【总结】

下面小编就为大家带来一篇Spring MVC前端与后端5种ajax交互方法【总结】。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Ajax校验是否重复的实现代码

这篇文章主要介绍了Ajax校验是否重复的实现代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多