Ajax request response 乱码解决方法

所属分类: 网络编程 / AJAX相关 阅读数: 1001
收藏 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..
更多精彩内容其他人还在看

ajax中文乱码问题解决方案

ajax中文乱码问题在中文中经常会出现这种问题,其实只要稍加注意就不会出现ajax中文乱码这回事情了,接下来为大家详细介绍下如何解决这类问题
收藏 0 赞 0 分享

jquery ajax实现批量删除具体思路及代码

回调函数,在请求完成后需要进行的操作:此处是把选中的checkbox去掉,接下来为大家详细介绍下,感兴趣的朋友可以参考下哈,希望对你有所帮助
收藏 0 赞 0 分享

JQuery+ajax实现批量上传图片(自写)

jquery+ajax方式实现单张图片上传的代码是可以搜的到,实现批量上传图片的程序却没搜索到于是自己写了个,感兴趣的朋友可以参考下
收藏 0 赞 0 分享

利用Ajax实现在脚本里传值实例介绍

Ajax实现在脚本里传值可以解决实际上的一些问题,本文实现了一下,感兴趣的朋友可以参考下,希望可以帮助到你
收藏 0 赞 0 分享

jQuery+Ajax实现表格数据不同列标题排序(为表格注入活力)

CSS也使得表格的布局越来越光彩耀人。但是,无论如何,都掩饰不了那些包装下的死板,接下来为大家介绍下让那些死板的数据 更具有可读性、可用性
收藏 0 赞 0 分享

jQery ajax——load()方法示例介绍

load(url,[data],[callback])url:加载的页面地址;data: 可选项,发送到服务器的数据,格式是key/value;callback:可选项,回调函数,示例代码如下
收藏 0 赞 0 分享

滑轮滚动到页面底部ajax加载数据配合jsonp实现探讨

滚动下拉到页面底部加载数据是很多瀑布流网站的做法,那来看看配合jsonp是如何实现的吧,小菜总结记录之用特在此与大家一起分享,感兴趣的朋友可以参考下哈
收藏 0 赞 0 分享

ajax 登录功能简单实现(未连接数据库)

未连接数据库下实现ajax 登录功能判断登陆成功与失败,喜欢ajax的朋友可以参考下哈,希望对大家有所帮助
收藏 0 赞 0 分享

AJAX和WebService实现邮箱验证(无刷新验证邮件地址是否合法)

首先在项目里面添加服务引用,验证 Email 地址是否正确(邮件地址合法、只是域名正确、邮件服务器没有找到等等)感兴趣的朋友可以参考下哈
收藏 0 赞 0 分享

AJAX和三层架构实现分页功能具体思路及代码

本文涉及到AJAX和三层架构方面的知识,在学习分页的同时也巩固了一下它们的相关知识,适合初学者的你
收藏 0 赞 0 分享
查看更多