java之後臺傳遞json中帶有單引號時的處理
阿新 • • 發佈:2018-12-29
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);
}