`

ajax传递参数含有特殊字符解决方案

阅读更多
引用

       JQuery AJAX中遇到这样一个问题,参数中包含特殊字符,比如&'#@等
       这是执行AJAX的时候就会出问题,因为所传的参数变了.
       看个示例就明白:



方案一:
              $.ajax({
                    url: '/ashx/ajax.ashx',
                    type: 'post',
                    data: 'option=delete&name=11&adb,
                    success: function (data) {
                        if (data != 'error') {
                          
                            }
                        }
               });
       上面执行的ajax就是异步删除一个name为 11&abd 的数据
       当请求到ajax.ashx页面时,我们获取到的name参数为11
       执行操作后会发现其实删除了name 为 11的数据,而没有删除 name 为 11&abc 的数据
       这是由于有&特殊字符,把以前的俩个参数变成了三个参数 option,name,abc
       这时就需要用另外一种方法传递参数:
              $.ajax({
                    url: '/ashx/ajax.ashx',
                    type: 'post',
                    data:{ 'option':'delete','name':'11&adb'},
                    success: function (data) {
                        if (data != 'error') {
                          
                            }
                        }
               });
       采用上面的json格式传递参数就可以避免特殊字符引起的参数错误问题.



方案二:
       统一编码UTF-8.
       1.JSP页面:<%@ page language="java" pageEncoding="UTF-8"%>
       2.Ajax.js页面:传递参数时,可能出现特殊字符的参数用                                           
         escape(encodeURIComponent())两函数进行转码,传递到后台!
         var url = "/ZX/servlet/AddMemoServlet?memo=" + memoCode + "&otherMemo=" + escape (encodeURIComponent(otherMemo)) + "&applNo=" + applNo.innerText.substr(0,16);  
        //alert("url="+url);
        xmlHttp.open("POST", url, true);
        xmlHttp.onreadystatechange = doMemo;
        xmlHttp.send(null);
       3.服务器端接收传递的数据 比如:一个servlet的doGet方法中:
         request.setCharacterEncoding("gb2312");
         response.setContentType("text/xml;charset=utf-8");
         response.setHeader("Cache-Control", "no-cache");
  ...... 
       //以下解决Ajax中url传递的参数值中包含特殊字符,后端解析出错的问题:以utf-8以方式解码
         java.net.URLDecoder urlDecoder=new java.net.URLDecoder();
         String otherMemo = urlDecoder.decode(request.getParameter("otherMemo"),"utf-8");
         logger.info("otherMemo:" + otherMemo);



分享到:
评论

相关推荐

    ajax传送参数含有特殊字符的快速解决方法

    JQuery AJAX中遇到这样一个问题,参数中包含特殊字符,比如&’#@等, 这时执行AJAX的时候就会出问题,因为所传的参数变了.看个示例就明白: 方案一: $.ajax({ url: '/ashx/ajax.ashx', type: 'post', data: 'option...

    jQuery 实现ajax传入参数含有特殊字符的方法总结

    在做ajax登录时候遇到的一个问题,当传入参数含有特殊字符,比如:“$'#@”等。参数传递会有问题,无法正确获取。本文章向码农介绍jQuery ajax特殊字符参数解决方法,需要的朋友可以参考一下。

    Ajax传递特殊字符的数据如何解决

    如下,对含有特殊字符的text进行JSON封装,通过Ajax传递, var data = {“Id”: id, “text”: text}; 在后台无法进行数据接收。 解决方案 将 req.setRequestHeader("Content-Type", "application/x-...

    JQuery.ajax传递中文参数的解决方法 推荐

    在网上搜索一下,复制粘贴发的到处都是的“终极”“解决方案”无非就是escape(str)来转码,然后在服务端还要写个方法再编辑一次,或用System.Text.Encoding下的方法来换来换去。 我很久以前一直在使用Prototype框架...

    真正的JQuery.ajax传递中文参数的解决方法

    在网上搜索一下,复制粘贴发的到处都是的“终极”“解决方案”无非就是escape(str)来转码,然后在服务端还要写个方法再编辑一次,或用System.Text.Encoding下的方法来换来换去。 我很久以前一直在使用Prototype框架...

    JS中append字符串包含onclick无效传递参数失败的解决方案

    append后面跟要添加的参数 ...上面这段代码如果有append添加的话,调用ajax返回参数添加参数到onclick中就会出现数据不能显示,整个js模块失效的情况,原因是onclick参数中如果包含整数又包含字符串的话,必须要给参

    jsonp json ajax跨域调用

    这两个问题目前都有不同的解决方案,比如数据可以用自定义字符串或者用XML来描述,跨域可以通过服务器端代理来解决。 但到目前为止最被推崇或者说首选的方案还是用JSON来传数据,靠JSONP来跨域。而这就是本文将要...

    PHP和MySQL WEB开发(第4版)

    5.8 参数的引用传递和值传递 5.9 使用Return关键字 5.9.1 从函数返回一个值 5.10 实现递归 5.10.1 名称空间 5.11 进一步学习 5.12 下一章 第6章 面向对象的PHP 6.1 理解面向对象的概念 6.1.1 类和对象 6.1.2 多态...

    PHP和MySQL Web开发第4版pdf以及源码

    5.8 参数的引用传递和值传递 5.9 使用Return关键字 5.9.1 从函数返回一个值 5.10 实现递归 5.10.1 名称空间 5.11 进一步学习 5.12 下一章 第6章 面向对象的PHP 6.1 理解面向对象的概念 6.1.1 类和对象 ...

    PHP和MySQL Web开发第4版

    5.8 参数的引用传递和值传递 5.9 使用Return关键字 5.9.1 从函数返回一个值 5.10 实现递归 5.10.1 名称空间 5.11 进一步学习 5.12 下一章 第6章 面向对象的PHP 6.1 理解面向对象的概念 6.1.1 类和对象 ...

    xheditor-1.1.14

    参数:字符串的URL地址,用以解决前后台不在同一路径的资源定位问题 备注:1.1.0新添加 urlType:本地URL地址强制转换方式选择 参数:abs(绝对路径),root(根路径),rel(相对路径) 备注:1.0.0 beta2新添加,v1.1.0版中...

    jquery-jsonp.js

     5、这样子解决方案就呼之欲出了,web客户端通过与调用脚本一模一样的方式,来调用跨域服务器上动态生成的js格式文件(一般以JSON为后缀),显而易见,服务器之所以要动态生成JSON文件,目的就在于把客户端需要的...

    ExtAspNet_v2.3.2_dll

    -一个典型应用,在Window控件中打开新页面,如果传递的参数不正确,则首先提示参数不对然后关闭此弹出窗口。 -ExtAspNet.Alert.Show("参数错误!", String.Empty, ExtAspNet.ActiveWindow.GetCloseReference());...

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    -一个典型应用,在Window控件中打开新页面,如果传递的参数不正确,则首先提示参数不对然后关闭此弹出窗口。 -ExtAspNet.Alert.Show("参数错误!", String.Empty, ExtAspNet.ActiveWindow.GetCloseReference());...

    亮剑.NET深入体验与实战精要2

    3.4.7 在URL中传递中文的解决方案 152 3.4.8 增强用户体验的一些技巧 153 3.4.9 XHTML与HTML的区别 156 3.5 打造自己的页面基类PageBase 161 本章常见技术面试题 164 常见面试技巧之如何做好自我介绍 164 本章小结 ...

    亮剑.NET深入体验与实战精要3

    3.4.7 在URL中传递中文的解决方案 152 3.4.8 增强用户体验的一些技巧 153 3.4.9 XHTML与HTML的区别 156 3.5 打造自己的页面基类PageBase 161 本章常见技术面试题 164 常见面试技巧之如何做好自我介绍 164 本章小结 ...

    ASP.NET3.5从入门到精通

    1.3.5 解决方案管理器 1.3.6 属性窗口 1.3.7 错误列表窗口 1.4 安装SQL Server 2005 1.5 ASP.NET 应用程序基础 1.5.1 创建ASP.NET 应用程序 1.5.2 运行ASP.NET 应用程序 1.5.3 编译ASP.NET 应用程序 1.6 小结 第 2 ...

    php网络开发完全手册

    15.5 常见问题与解决方案 259 15.6 小结 261 第16章 数据库中的程序逻辑 262 16.1 数据库程序逻辑与PHP程序逻辑的分体 16.1 设计原则 262 16.2 数据库中的程序逻辑与数据的关系 262 16.3 存储过程的设计 263 16.3.1 ...

    ASP.NET 3.5 开发大全11-15

    1.3.5 解决方案管理器 1.3.6 属性窗口 1.3.7 错误列表窗口 1.4 安装SQL Server 2005 1.5 ASP.NET应用程序基础 1.5.1 创建ASP.NET应用程序 1.5.2 运行ASP.NET应用程序 1.5.3 编译ASP.NET应用程序 1.6 小结 第2章 C# ...

    ASP.NET 3.5 开发大全

    1.3.5 解决方案管理器 1.3.6 属性窗口 1.3.7 错误列表窗口 1.4 安装SQL Server 2005 1.5 ASP.NET应用程序基础 1.5.1 创建ASP.NET应用程序 1.5.2 运行ASP.NET应用程序 1.5.3 编译ASP.NET应用程序 1.6 小结 第2章 C# ...

Global site tag (gtag.js) - Google Analytics