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传送参数含有特殊字符的快速解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • AJAX在GB2312的中文编码传输 AJAX特殊字符编码正确方法

    很多可能在转摘过程中失真或未经验证就被转摘,真正使用时却不行,也由此决定自己全方位试验一下,努力还是没有白费,虽然最终得出的结果是很简单的,但其过程对于一个新学AJAX的人来说,真是挺累.欢迎您在使用过程中对新的心得一起跟帖交流,一个思想+一个思想,至少可以产生两个思想. 一.在GET发送时: 方法1:在ASP服务器端用Response.charset="GB2312"界定输出编码给调用客户端 此时客户端不需要做什么转换即可.如下两个文件: 1.客户端JS 复制代码 代码如下: var

  • jquery ajax对特殊字符进行转义防止js注入使用示例

    在使用ajax进行留言的时候,出现了一个问题.因为留言内容写完之后,通过ajax提交内容,同时使用js把留言的内容添加到页面上来.浏览留言的时候也是通过ajax请求,然后再显示的.这样,如果有人在留言里写入了js语句,这结语句都会被执行.解决办法就是对这些特殊字符进行转义再显示出来.如果在jsp中使用jstl标签,就很简单了.直接使用<c:out value="${r.content}" />这样就行了,会自动进行转义,其中省略了参数escapeXML="true

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

    在做ajax登录时候遇到的一个问题, 当传入参数含有特殊字符,比如:"$'#@"等.参数传递会有问题,无法正确获取. $.ajax({ url: '/user/login.ydd', type:'post', data:'name=abce&password=abcd&pwd', success: function(data){ } }) 我要传入的是用户名为:abc,密码为abcd&pwd的用户登录.但传入后台获取参数,会被password=abcd当作一个参

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

    问题描述 如下,对含有特殊字符的text进行JSON封装,通过Ajax传递, var data = {"Id": id, "text": text}; 在后台无法进行数据接收. 解决方案 将 req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 换为: req.setRequestHeader("Content-type&

  • jquery与ajax获取特殊字符实例详解

    jquery与ajax获取特殊字符 在用jquery加ajax写的时候,发现如果传进去的数据包含&则无法获取数据而+号的话就会被判定为空,解决办法就是使用encodeURIComponent()函数对要发送的数据进行编码. function ajax() { $val = encodeURIComponent($('#note').val()); $.ajax({ type: 'post', url: 'xxx.php', data: 'txt=' + $val, success: functi

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

    JQuery AJAX中遇到这样一个问题,参数中包含特殊字符,比如&'#@等, 这时执行AJAX的时候就会出问题,因为所传的参数变了.看个示例就明白: 方案一: $.ajax({ url: '/ashx/ajax.ashx', type: 'post', data: 'option=delete&name=11&adb, success: function (data) { if (data != 'error ') { } } }); ' 上面执行的ajax就是异步删除一个nam

  • Ajax 动态载入html页面后不能执行其中的js快速解决方法

    事件背景 有一个公用页面需要在多个页面调用,其中涉及到部分js已经写在了公用页面中,通过ajax加载该页面后无法执行其中的js. 解决思路 1. 采用附加一个iframe的方法去执行js,为我等代码洁癖者所不齿. 2. 使用document.write输出代码,我等简洁主义者所不愿. 3. 最简单的方法是把js放到需要调用的父页面,那想这样的公用页面,每个地方调用都要写入一次,代码冗余. 4. eval是个解决方法,虽然低效. 5. 复杂的解决方法:正则匹配出加载页面中的所有js,为这些js创建

  • IE下Ajax提交乱码的快速解决方法

    哈哈,试了这么多还是encodeURIComponent管用啊!!!! 在汉字的位置加个保护措施:encodeURIComponent(parentid) function loadCity(parentid) { var city = '${hotel.city}'; $.ajax({ url: './listCity.jspx?prov='+ encodeURIComponent(parentid), type: 'GET', dataType: 'JSON', timeout: 5000,

  • ajax返回object Object的快速解决方法

    现象:使用ajax发送请求,因为后台PHP,使用了阿里的短信,后来返回类型object Object,在浏览器上看到是这样的返回格式:{msg:90,ok:ok}[1,#98978].ajax返回值不好处理.{msg:90,ok:ok}这个是第三方短信返回值,去不掉.[1,#98978]这个才是自己后台要用到的返回值. 如果返回类型复杂,并且只是返回一个字段,此时可以用complete接受回调函数,data.responseText将返回结果作为String,在截取字符串即可. 解决方法: <s

  • IE9 IE8 ajax跨域问题的快速解决方法

    网上解决办法均是 在发起请求之前添加 jQuery.support.cors=true;但是,线下测试,是ok的,一放到服务器上,又出现了新的eroor:readyState: 0, status: 0, statusText: "Error: 拒绝访问... 最后,问题是这样解决的,点击IE浏览器的的"工具->Internet 选项->安全->自定义级别"将"其他"选项中的"通过域访问数据源"选中为"启用&

  • ajax在兼容模式下失效的快速解决方法

    使用jQuery,用ajax实现局部刷新功能,在火狐,360急速浏览器高速模式下,ie8,9都能正常运行,但切换到兼容模式下无效,解决办法有两种关闭浏览器兼容性视图,二是引入json2.js文件 这里采用第一种,并且使用一种完美兼容性解决办法,在head头部加入 <meta http-equiv="X-UA-Compatible" content="IE=9;IE=8;IE=7;IE=EDGE"> 即可! 以上这篇ajax在兼容模式下失效的快速解决方法就

  • 页面get请求 中文参数方法乱码问题的快速解决方法

    对于get方式,请求参数中存在中文,可以使用下面的方法进行处理: 两次使用encodeURI()方法:例如:encodeURI(encodeURI("中文")),然后再服务器中使用URLDecoder.decode("中文", "UTF-8"); 以上这篇页面get请求 中文参数方法乱码问题的快速解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • 关于验证码在IE中不刷新的快速解决方法

    今天在做验证码的时候发现在IE中,验证码不会刷新,而谷歌等其他浏览器没有问题,所以我想到应该是缓存问题,因为IE默认的设置是如果访问地址没变化就不会去获取而是加载缓存中的内容 所以解决方案就是在验证码的切换地址后面加一个随机的参数 例如: <script> //换验证码 function changeimg(){ /* math.random范围是0-1 *999变成0-999 +3000 就是3000-3999 */ var time=Math.round(Math.random()*999

  • 请求转发jsp页面乱码问题的快速解决方法

    •在最近的项目中 使用了jsp+servlet来开发项目,但是由于后台的不太熟练 导致了困难重重.所幸 学习能力还可以 一边做一遍学吧. •今天的问题:请求转发后页面的乱码问题 •由于特殊原因--图片上传的form表单无法通过ajax提交 因此必须使用form表单直接提交.但是这样会导致一个问题:前后台交互的时候效果不好.为什么效果不好?这里说的不是功能的问题.作为web开发者,客户的体验我们要放在第一位.因此,我们必须将对客户的信息反馈放在一个比较重要的地位.说白了,就是上传个图片成没成功?我

随机推荐