js jQuery中Ajax请求参数转义问题

前几天在工作的时候,在和移动端做接口的时候发现,前端在传递参数的时候其中有+或者&时候,服务器获得串中+或者&都变成了空格,后台Java程序在解析的时候出错了!

具体代码如下:

$(function () {
  var isPc = !(window.__detect.android||window.__detect.ios||window.__detect.phone),
    moonCakeNums,
    moonCakeIdentify= 0,
    <span style="color:#ff0000;">token = userCookieControl.getCookie('authtoken'),
    APP_ARGS  = token?'&authtoken='+encodeURIComponent(token)+'&from=m':'',</span>
    GUAGUA_SCHMA = 'guagua://guagua::5::13:1;18:2', //guagua://guagua::8::21:2
  //退出的登录地址
    logoutBackUrl = 'http://event.guagua.cn/event/zhongqiu/index.html';
  //防止用户重复提交
  function blockAjax(delay){
    var $elem = $('body'),
      isBlock = $elem.attr('data-block');
    if(isBlock) return true;
    $elem.attr('data-block', 'block');
    setTimeout(function(){
      $elem.removeAttr('data-block');
    }, delay||1200 );
  }
  //登录弹框
  function popupLoginDlg(){
    if(isPc){
      //末登录
      guaguaLR._run('l');
    } else {
      window.location.href = GUAGUA_SCHMA;
    }
  }
  function __checkLogin(){
    var isLogin = checkLoginStatus();
    if(!isLogin) popupLoginDlg();
    return !!isLogin;
  }
  //ios首页隐藏兑换按钮
  //if(window.__detect.ios) $('#J_exchange_btn').hide();
  //首页兑换按钮
  $('#J_exchange_btn').bind('click', function(e) {
    e.preventDefault();
    if(__checkLogin()) {
      window.location.href = './duihuan.html';
    }
}); 

其中从移动App的页面cookie获得用户的登录信息(authtoken)中的含有+和&符号,导致服务端获得authtoken时解析错误了,解决的方式就是对authtoken进行URL转义。代码如下:

APP_ARGS  = token?'&authtoken='+encodeURIComponent(token)+'&from=m':'',

这样服务器就能够获得正常的authtoken,并解析得到其中用户信息!

时间: 2024-10-27 13:25:51

js jQuery中Ajax请求参数转义问题的相关文章

JQuery中Ajax详细参数使用案例

JQuery中Ajax详细参数使用案例 参考文档:http://www.jb51.net/shouce/jquery1.82/ 参考文档:http://jquery.cuishifeng.cn/jQuery.Ajax.html 注意事项 本案例演示测试了官方文档中不常用的参数使用方法 前端代码 function theFileUploadGai() {//执行上传 var zhi={ "a1":["你好啊","こんにちは","hello

JQuery中$.ajax()方法参数详解

url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如put和 delete也可以使用,但仅部分浏览器支持. timeout: 要求为Number类型的参数,设置请求超时时间(毫秒).此设置将覆盖$.ajaxSetup()方法的全局设 置. async:要求为Boolean类型的参数,默认设置为true,所有请求均为异步请求. 如果需要发送同步请求,请将此选项

JQuery中$.ajax()方法参数

url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如put和 delete也可以使用,但仅部分浏览器支持. timeout: 要求为Number类型的参数,设置请求超时时间(毫秒).此设置将覆盖$.ajaxSetup()方法的全局设 置. async:要求为Boolean类型的参数,默认设置为true,所有请求均为异步请求. 如果需要发送同步请求,请将此选项

jQuery 中 ajax 请求数据应用的一个小demo

举一个jquery中ajax的应用小 demo 便于以后的更多项目拓展 ,这里要注意的是保存的文件名和文件图片路径问题 ... ajax01.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title> ajax小例子 </title> </head> <body> <!--

JQuery中$.ajax()方法参数详解 (转)

url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如put和 delete也可以使用,但仅部分浏览器支持. timeout: 要求为Number类型的参数,设置请求超时时间(毫秒).此设置将覆盖$.ajaxSetup()方法的全局设 置. async:要求为Boolean类型的参数,默认设置为true,所有请求均为异步请求. 如果需要发送同步请求,请将此选项

JQuery中$.ajax()方法参数详解与案例

通过 HTTP 请求加载远程数据. jQuery 底层 AJAX 实现.简单易用的高层实现见 $.get, $.post 等.$.ajax() 返回其创建的 XMLHttpRequest 对象.大多数情况下你无需直接操作该函数,除非你需要操作不常用的选项,以获得更多的灵活性. 最简单的情况下,$.ajax()可以不带任何参数直接使用. 注意,所有的选项都可以通过$.ajaxSetup()函数来全局设置. 默认情况下,Ajax请求使用GET方法.如果要使用POST方法,可以设定type参数值.这个

JQuery中$.ajax()方法参数详解(转载)

type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如put和 delete也可以使用,但仅部分浏览器支持. timeout: 要求为Number类型的参数,设置请求超时时间(毫秒).此设置将覆盖$.ajaxSetup()方法的全局设 置. async:要求为Boolean类型的参数,默认设置为true,所有请求均为异步请求. 如果需要发送同步请求,请将此选项设置为false.注意,同步请求将锁住浏览器,用户其他操作必须等 待请求完成才

jquery 中ajax的参数

url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如put和delete也可以使用,但仅部分浏览器支持. timeout: 要求为Number类型的参数,设置请求超时时间(毫秒).此设置将覆盖$.ajaxSetup()方法的全局设置. async:要求为Boolean类型的参数,默认设置为true,所有请求均为异步请求.如果需要发送同步请求,请将此选项设置为

jQuery中$.ajax()方法参数解析

本文实例为大家讲解了jQuery $.ajax()方法参数,供大家参考,具体内容如下 $.ajax({ url:'test.do', data:{id:123,name:'xiaoming'}, type:'post', dataType:'json', success:function(data){ alert(data);//弹窗 //TODO ........ }, error:function(data){ alert(data);//弹窗 //TODO ........ } }) ur