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

时间: 2024-10-23 14:38:39

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

ajax传送参数含有特殊字符的快速解决方法_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

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

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

IE下Ajax缓存问题的快速解决方法

 IE下Ajax缓存问题的快速解决方法(get方式).网上搜了很多解决方案,一大把,下面是我认为比较全面的解决方案.主要分为客户端解决和服务端解决 折腾了半天,程序中使用jquery的load方法进行请求,很奇怪为啥第二次无法发送请求.百度了一把,谁知load是用get方式进行请求的,因此IE浏览器对   其进行缓存了.网上搜了很多解决方案,一大把,下面是我认为比较全面的解决方案.主要分为客户端解决和服务端解决.   1.客户端解决方案 IE访问策略:Internet选项--浏览历史记录--设置

IE下Ajax提交乱码的快速解决方法_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

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,

jQuery中ajax的使用与缓存问题的解决方法

本篇文章主要介绍了jQuery中ajax的使用与缓存问题的解决方法.需要的朋友可以过来参考下,希望对大家有所帮助 1:GET访问 浏览器 认为 是等幂的 就是 一个相同的URL 只有一个结果[相同是指 整个URL字符串完全匹配] 所以 第二次访问的时候 如果 URL字符串没变化 浏览器是 直接拿出了第一次访问的结果   POST则 认为是一个 变动性 访问 (浏览器 认为 POST的提交 必定是 有改变的)   防止 GET 的 等幂 访问 就在URL后面加上 ?+new Date();,[总之

js为空或不是对象问题的快速解决方法

 这篇文章主要介绍了js为空或不是对象问题的快速解决方法.需要的朋友可以过来参考下,希望对大家有所帮助 1.加了个参数<script language="javascript" defer="defer">   2. 'null'为空或不是对象:   <script type="text/javascript"> 里面加个defer=true属性试试看,   即:<script type="text/jav

Bootstrap Table表格一直加载(load)不了数据的快速解决方法_javascript技巧

bootstrap-table是一个基于Bootstrap风格的强大的表格插件神器,官网:http://bootstrap-table.wenzhixin.net.cn/zh-cn/ 这里列出遇到的一个小问题:Bootstrap Table表格一直加载不了数据. $("#button").click(function(){ var name=$("input[name='name']").val(); $('#table').bootstrapTable('load