1. 程式人生 > >java之後臺傳遞json中帶有單引號時的處理

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