AJAX Json Object

This is the text to descibe how to use AJAX edit the page list.

 Json dojo ArrayList critical object:


1.  jsp

<!-- load dojo and provide config via data attribute -->
<script type="text/javascript" 
src="<%=request.getContextPath()%>/js/dojo-toolkit-1.4.1/dojo/dojo.js"></script>
<script type="text/javascript" 
src="<%=request.getContextPath()%>/js/json2.js"></script>
<script type="text/javascript" 
src="<%=request.getContextPath()%>/js/json_sans_eval.js"></script>

<script>
// Function that refreshes a node's content
function sendForm() {
// Get the result node
var resultNode = dojo.byId("formResultNode");
// Using dojo.xhrGet, as very little information is being sent
dojo.xhrPost({
// The URL of the request
url: "validate.sv",
// Form to send
form: dojo.byId("formNode"),
// The success callback with result from server
load: function(data) {
dojo.style(resultNode,"display","block");
   var myobj = jsonParse(data); 
   for (var k in myobj) {
 alert(k + '=' + myobj[k].name + myobj[k].bio);
}    
resultNode.innerHTML = data;
},
// The error handler
error: function() {
resultNode.innerHTML = "Your form could not be sent.";
}
});
}
 
</script>


2. import net.sf.json.JSONArray;


TestObject obj = new TestObject(); 
TestObject obj2 = new TestObject(); 
     try {               
         obj.setName(request.getParameter("name")); 
         obj.setBio(request.getParameter("bio"));
         obj.setFavoriteColor(request.getParameter("favoriteColor"));
         obj.setDojoUser(request.getParameter("dojoUser"));
         obj.setFavoriteDays(request.getParameterValues("favoriteDays[]"));
         
         obj2.setName(request.getParameter("name")+"2"); 
         obj2.setBio(request.getParameter("bio")+"2");
         obj2.setFavoriteColor(request.getParameter("favoriteColor")+"2");
         obj2.setDojoUser(request.getParameter("dojoUser")+"2");
         obj2.setFavoriteDays(request.getParameterValues("favoriteDays[]"));
     } catch (Exception e) {     
         e.printStackTrace();     
     }     
          
     List list = new ArrayList();
     list.add(obj);
     list.add(obj2);
     
     JSONArray resultJSON = new JSONArray();     
              try {     
              resultJSON =  JSONArray.fromObject(list);      
                  System.out.println(resultJSON.toString());     
              } catch (Exception e) {     
                  e.printStackTrace();     
              }    

             
response.setContentType("text/json");               
response.getWriter().println(resultJSON.toString());  



3. jars and js files.

 

<script type="text/javascript" src='<c:out value="${ctx}" />/js/prototype/prototype.js'></script>
 

json and xml compare

 http://wenku.baidu.com/view/49800b83d4d8d15abe234e83.html

 

 

<display:column title="" media="html" style="width: 220px;">
     <input type="hidden" id="update_option_<c:out value="${mapping.cntryId}"/>_<c:out value="${mapping.segId}"/>"
     name="updateOption" value="edit">
     <input type="hidden" id="proftCtrId_<c:out value="${mapping.cntryId}"/>_<c:out value="${mapping.segId}"/>"
     value="<c:out value="${mapping.proftCtrId}" />">
     
     <a href="#" style="display: none" id="add_<c:out value="${mapping.cntryId}"/>_<c:out value="${mapping.segId}"/>"
     οnclick="add_entry('<c:out value="${mapping.cntryId}"/>','<c:out value="${mapping.segId}"/>')">Add</a>
     
     <div style="display: none" id="new_div_<c:out value="${mapping.cntryId}"/>_<c:out value="${mapping.segId}"/>">
      <input align="left" type="text" id="new_id_<c:out value="${mapping.cntryId}"/>_<c:out value="${mapping.segId}"/>">
      <input type="button" value="Save" id="save_button_<c:out value="${mapping.cntryId}"/>_<c:out value="${mapping.segId}"/>"
      οnclick="save_entry('<c:out value="${ctx}"/>/profitcentermapping/save.action?cntryId=<c:out value="${mapping.cntryId}"/>&cntryName=<c:out value="${mapping.cntryName}"/>&segId=<c:out value="${mapping.segId}"/>&segName=<c:out value="${mapping.segName}"/>','<c:out value="${mapping.cntryId}"/>','<c:out value="${mapping.segId}"/>')">
      <input type="button" value="Cancel" id="cancel_<c:out value="${mapping.cntryId}"/>_<c:out value="${mapping.segId}"/>"
      οnclick="cancel_entry('<c:out value="${mapping.cntryId}"/>','<c:out value="${mapping.segId}"/>')" >
     </div>     
     <span style="display: block" id="pc_id_name_<c:out value="${mapping.cntryId}"/>_<c:out value="${mapping.segId}"/>" >
      <c:out value="${mapping.proftCtrId}" />&nbsp;&nbsp;&nbsp;<c:out value="${mapping.proftCtrName}" />
     </span>
    </display:column>
    

 

 

function save_entry(action,cntryId,segId){
 var newProftCtrId = document.getElementById("new_id_"+cntryId+"_"+segId);
 var update_option=document.getElementById("update_option_"+cntryId+"_"+segId);
 var url=action+"&proftCtrId="+newProftCtrId.value+"&updateOption="+update_option.value;
  new Ajax.Request(url,  
   { method:'get',
     onLoading:onLoad(cntryId,segId),
     onSuccess: function(transport){
     var response = transport.responseXML; 
     var val=
     response.getElementsByTagName("passed")[0].firstChild.data; 
     var msg=
     response.getElementsByTagName("message")[0].firstChild.data;
  
        var proftCtrId=
     response.getElementsByTagName("proftCtrId")[0].firstChild.data; 
     var proftCtrName=
     response.getElementsByTagName("proftCtrName")[0].firstChild.data;
     var modifiedBy =
       response.getElementsByTagName("modifiedBy")[0].firstChild.data;
     var modifiedOn =
       response.getElementsByTagName("modifiedOn")[0].firstChild.data;
       
     //alert(val+msg+proftCtrId+proftCtrName+modifiedBy+modifiedOn); 

      if(val=='true'){
         //update hidden proftCtrId
         var hiddenProftCtrId=document.getElementById("proftCtrId_"+cntryId+"_"+segId);
         hiddenProftCtrId.value = proftCtrId;
       //change status to update_option_
       var updateOption=document.getElementById("update_option_"+cntryId+"_"+segId);
       updateOption.value="edit";
       //hide new_div_
       var newDiv=document.getElementById("new_div_"+cntryId+"_"+segId);
       newDiv.style.display = "none";
       //set value and display span for profit center id and name
       var pcIdName = document.getElementById("pc_id_name_"+cntryId+"_"+segId);
       pcIdName.style.display = "block";
       pcIdName.innerHTML = proftCtrId+"&nbsp;&nbsp;&nbsp;"+proftCtrName;
       //display edit_div_
       var editDiv = document.getElementById("edit_div_"+cntryId+"_"+segId);
       editDiv.style.display = "block";
       // set innerText and display modified date span
       var dateSpan = document.getElementById("date_span_"+cntryId+"_"+segId);
       dateSpan.innerText = modifiedOn;
       dateSpan.style.display = "block";
       // set innerText and display modified user span
       var userSpan = document.getElementById("user_span_"+cntryId+"_"+segId);
       userSpan.innerText = modifiedBy;
       dateSpan.style.display = "block";

      }else{
       alert(msg);
      }
     },  
     onFailure: function(){
      alert('Something went wrong...');
     }  
    });
   
 ;
}

 

 

 

function check_entry(action, cntryId, segId){
var proftCtrId = document.getElementById("new_id_"+cntryId+"_"+segId);
var url = action+"?proftCtrId="+proftCtrId.value;
alert(url);
new Ajax.Request(url,  
   { method:'get',
     onSuccess: function(transport){
     var response = transport.responseXML; 
     var val=
     response.getElementsByTagName("passed")[0].firstChild.data; 
     alert(val);
     var msg=
     response.getElementsByTagName("message")[0].firstChild.data;
  
     alert(msg); 
     var proftCtrName = document.getElementById("new_name_"+cntryId+"_"+segId);
     var saveButton = document.getElementById("save_button_"+cntryId+"_"+segId);
     if(val=='true'){
      saveButton.style.display = "block";
     }else{
      saveButton.style.display = "none";
     }
    
     proftCtrName.innerText =  msg;
     },    
     onFailure: function(){
     alert('Something went wrong...') }  
     });
}

 

 

function delete_entry(action,cntryId, segId){
 var proftCtrId = document.getElementById("new_id_"+cntryId+"_"+segId);
 var url=action+"?cntryId="+cntryId+"&segId="+segId+"&proftCtrId="+proftCtrId;
 if(confirm("Delete entry ?")){
  new Ajax.Request(url,  
   { method:'get',
     onSuccess: function(transport){
     var response = transport.responseXML; 
     var val=
     response.getElementsByTagName("passed")[0].firstChild.data; 
     var msg=
     response.getElementsByTagName("message")[0].firstChild.data;
  
       if(val=='true'){
         //update hidden proftCtrId
         var hiddenProftCtrId=document.getElementById("proftCtrId_"+cntryId+"_"+segId);
         hiddenProftCtrId.value = "";
       //change status to update_option_
       var updateOption=document.getElementById("update_option_"+cntryId+"_"+segId);
       updateOption.value="add";
       //display add_
       var addLink=document.getElementById("add_"+cntryId+"_"+segId);
       addLink.style.display = "block";
       //hide new_div_
       var newDiv=document.getElementById("new_div_"+cntryId+"_"+segId);
       newDiv.style.display = "none";
       //clean value and hide span for profit center id and name
       var pcIdName = document.getElementById("pc_id_name_"+cntryId+"_"+segId);
       pcIdName.style.display = "none";
       pcIdName.innerHTML = "";//proftCtrId+"&nbsp;&nbsp;&nbsp;"+proftCtrName;  deleted
       //hide edit_div_
       var editDiv = document.getElementById("edit_div_"+cntryId+"_"+segId);
       editDiv.style.display = "none";
       // clean innerText and hide modified date span
       var dateSpan = document.getElementById("date_span_"+cntryId+"_"+segId);
       dateSpan.innerText = "";
       dateSpan.style.display = "none";
       // clean innerText and hide modified user span
       var userSpan = document.getElementById("user_span_"+cntryId+"_"+segId);
       userSpan.innerText = "";
       dateSpan.style.display = "none";
      }else{
       alert(msg);
      }
     },    
     onFailure: function(){
     alert('Something went wrong...') }  
     });
 }
}

 

 

/*
  * AJAX stuff
  * depends on the value of updateOption. will do insert or update to database
  * return XML to client
  */
 public void save() throws Exception{
     boolean passed = false;
     String msg = "Nothing found to display."; 
  response.setContentType("text/xml");
  response.setHeader("Cache-Control", "no-cache");
     String proftCtrId = request.getParameter("proftCtrId");
     String proftCtrName = profitCenterMappingDao.existPC(proftCtrId);
     boolean pcWithMapping = profitCenterMappingDao.existPCM(proftCtrId);
     if(proftCtrName==null){
      returnNoSuchProftCtrXML(passed,msg,proftCtrId);
      log.info("can not find profit center: "+proftCtrId);
     }else if(pcWithMapping){
      returnDuplicateProftCtrXML(passed,msg,proftCtrId);
      log.info("profit center: "+proftCtrId+" has been mapped.");
     }else{
      
   UserDataBean userData = (UserDataBean)request.getSession().getAttribute(WWMDConstants.SESS_USER_DATA_BEAN);
   String currentUserName = userData.getUsername();

      String cntryId = request.getParameter("cntryId");
      String cntryName =  request.getParameter("cntryName");
      String segId =  request.getParameter("segId");
      String segName =  request.getParameter("segName");
      String updateOption =  request.getParameter("updateOption");
      Date currentDate = getCurrentDate();
      String date = formatDate(currentDate);
   
      ProfitCenterMapping pcm= new ProfitCenterMapping();
      pcm.setCntryId(cntryId);
      pcm.setCntryName(cntryName);
      pcm.setSegId(segId);
      pcm.setSegName(segName);
      pcm.setModifiedBy(currentUserName);
      pcm.setModifiedOn(currentDate);
      pcm.setProftCtrId(proftCtrId);
      pcm.setProftCtrName(proftCtrName);
   
      if (UPDATE_ADD.equalsIgnoreCase(updateOption)){
       passed = profitCenterMappingDao.addProfitCenterMapping(pcm);
          if(passed){
           msg = "add success!";
           log.info("added profit center. id:"+proftCtrId+" name:"+proftCtrName);
          }
      }else if(UPDATE_EDIT.equalsIgnoreCase(updateOption)){
       passed = profitCenterMappingDao.updateProfitCenterMapping(pcm);
          if(passed){
           msg = "modify success!";
           log.info("updated profit center. id:"+proftCtrId+" name:"+proftCtrName);
          }
      }
      if(passed){
          pcm = profitCenterMappingDao.getPCM(cntryId, segId);
      }
     
      returnProftCtrXML(passed,msg,pcm);
     
     
     }
 }

 

 

 

 

private void returnProftCtrXML(boolean passed,String msg,ProfitCenterMapping pcm)throws Exception{
  String proftCtrName = HTMLEncoder.htmlEncode(pcm.getProftCtrName());
  log.info("encode profit center name from "+pcm.getProftCtrName()+" to "+proftCtrName);
  
     PrintWriter pw = response.getWriter();
     pw.println("<response>");
     pw.println("<passed>"+passed+"</passed>");
     pw.println("<message>" + msg + "</message>");
     pw.println("<proftCtrId>"+pcm.getProftCtrId()+"</proftCtrId>");
     pw.println("<proftCtrName>" + proftCtrName + "</proftCtrName>");
     pw.println("<modifiedBy>"+pcm.getModifiedBy()+"</modifiedBy>");
     pw.println("<modifiedOn>" + formatDate(pcm.getModifiedOn()) + "</modifiedOn>");
     pw.println("</response>");
     pw.close();
 }

 

 

 

/**
  * AJAX stuff
  * Deletes current mapping.
  */
 public void remove()throws Exception{
  boolean passed = false;
     String msg = "remove failed!";  
  response.setContentType("text/xml");
  response.setHeader("Cache-Control", "no-cache");
  
     String cntryId = request.getParameter("cntryId");
     String segId =  request.getParameter("segId");

     ProfitCenterMapping pcm= new ProfitCenterMapping();
     pcm.setCntryId(cntryId);
     pcm.setSegId(segId);

     pcm = profitCenterMappingDao.getPCM( cntryId, segId);
     passed = profitCenterMappingDao.deleteProfitCenterMapping(pcm);
     if(passed){msg = "remove success!";}
  PrintWriter pw = response.getWriter();
  pw.println("<response>");
  pw.println("<passed>"+passed+"</passed>");
  pw.println("<message>" + msg + "</message>");
  pw.println("</response>");
  pw.close();
  log.info("deleted profit center id:"+pcm.getProftCtrId()+" name:"+pcm.getProftCtrName());
 }

 

 

 

private void returnNoSuchProftCtrXML(boolean passed,String msg,String proftCtrId)throws Exception{
  msg = "Failed! Profit center "+proftCtrId+" is not exist.";
  PrintWriter pw = response.getWriter();
     pw.println("<response>");
     pw.println("<passed>"+passed+"</passed>");
     pw.println("<message>" + msg + "</message>");
     pw.println("<proftCtrId>"+msg+"</proftCtrId>");
     pw.println("<proftCtrName>" +msg + "</proftCtrName>");
     pw.println("<modifiedBy>"+msg+"</modifiedBy>");
     pw.println("<modifiedOn>" + msg + "</modifiedOn>");
     pw.println("</response>");
     pw.close();
 }
 private void returnDuplicateProftCtrXML(boolean passed,String msg,String proftCtrId)throws Exception{
  msg = "Duplicate! Profit center "+proftCtrId+" has been mapped.";
     PrintWriter pw = response.getWriter();
     pw.println("<response>");
     pw.println("<passed>"+passed+"</passed>");
     pw.println("<message>" + msg + "</message>");
     pw.println("<proftCtrId>"+msg+"</proftCtrId>");
     pw.println("<proftCtrName>" +msg + "</proftCtrName>");
     pw.println("<modifiedBy>"+msg+"</modifiedBy>");
     pw.println("<modifiedOn>" + msg + "</modifiedOn>");
     pw.println("</response>");
     pw.close();
 }

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值