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);
}
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);
}