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;
}
}
json值的类型有哪些回调函数(需要添加objectToString函数来转化):
function showMessage(msg){
msg=objectToString(msg);
if(msg=="true"){
alert("亲,欢迎来");
}else{
alert("请确认输⼊内容");
}
}
和回调函数(需要添加objectToString函数来转化):
function btn_btn3_onclickCallback(msg){
msg=objectToString(msg);
alert("转化之后应该是字符串:"+msg);
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论