java之后台传递json中带有单引号时的处理

1 如果前台是通过ajax来处理,后台的传递到前台的参数json类型中的值如果带有单引号的话。需要特外的进行处理。


2 先看不带单引号的处理方法。如果后台传递到前台的参数json中的值不带有单引号。前台的ajax中的success方法中需要执行回调函数,且还需要传递参数。需要通过eval(func_+"('"+JSON.stringify(msg)+"')");
如:function submitAjax_fun(url_data_,func_){
 
  jQuery.ajax({
  url:url_data_,
  type:"post",
  dataType:"json",
  success:function(msg){
  try{
  eval(func_+"('"+JSON.stringify(msg)+"')");//后台传递的参数值不带有单引号
  }catch(e){
  eval(func_+"("+JSON.stringify(msg)+")");//后台传递的参数带有单引号
  }
 
  }
  });
  }


解析:eval是js中的方法。可以代表执行js语句。func_为传递的回调函数名,msg为后台传递到前台的参数,如果不带有单引号。则通过eval(func_+"('"+JSON.stringify(msg)+"')")需要在"("和")"的前后添加单引号,表示是字符串的参数,即参数为字符串类型的。


3 如果后台传递到前台的参数json类型的值带有单引号。则上述的方法会报错。因为值中带有单引号,在调用回调函数的时候还添加单引号,则会报错。这时需要把回调函数的单引号去掉。使用eval(func_+"("+JSON.stringify(msg)+")")。
如:function submitAjax_fun(url_data_,func_){
 
  jQuery.ajax({
  url:url_data_,
  type:"post",
  dataType:"json",
  success:function(msg){
  try{
  eval(func_+"('"+JSON.stringify(msg)+"')");//后台传递的参数值不带有单引号
  }catch(e){
  eval(func_+"("+JSON.stringify(msg)+")");//后台传递的参数带有单引号
  }
 
  }
  });
  }


4 js中如果报错,可以通过try{}catch(e){}来捕获。
如:function submitAjax_fun(url_data_,func_){
 
  jQuery.ajax({
  url:url_data_,
  type:"post",
  dataType:"json",
  success:function(msg){
  try{//通过try来捕获,如果错误则调用catch中的语句
  eval(func_+"('"+JSON.stringify(msg)+"')");//后台传递的参数值不带有单引号
  }catch(e){
  eval(func_+"("+JSON.stringify(msg)+")");//后台传递的参数带有单引号
  }
 
  }
  });
  }


5 后台传递到前台参数如果没有带有着单引号,而通过eval(func_+"('"+JSON.stringify(msg)+"')")来调用回调函数中的参数这时为字符串类型。如果后台传递到前台参数带有单引号,这时通过eval(func_+"("+JSON.stringify(msg)+")")来调用会带偶函数中的参数这时为类类型,为了兼容不带有单引号的处理。这时需要通过调用一个函数。来处理。通过typeof来判断,如果是object表示是json类型,则需要转化为字符串,如果不是object类型则直接返回。这时为了兼容不带单引号的处理。
如:function objectToString(msg){
  if(typeof(msg)=="object"){
  return JSON.stringify(msg);
  }else{
  return msg;
  }
  }


回调函数(需要添加objectToString函数来转化):
function showMessage(msg){
  msg=objectToString(msg);
  if(msg=="true"){
  alert("亲,欢迎来");
  }else{
  alert("请确认输入内容");
  }
  }
和回调函数(需要添加objectToString函数来转化):
function btn_btn3_onclickCallback(msg){
  msg=objectToString(msg);
  alert("转化之后应该是字符串:"+msg);
  }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值