關於Extjs表單提交中success的當下見解
阿新 • • 發佈:2019-02-04
目前所做的專案中,用到了一個表單提交。因為不太會用jsp操作資料庫,所以用Ext為前臺,jsp中間傳資料,java作為真正後臺操作資料庫。
所以上出現了一個問題,Ext表單提交的success和failure,是提交到jsp就判定success了還是說資料庫操作完成後才算success。
當然對於人類來講,資料庫操作成功了才應該返回success。但是對於電腦而言,無論你資料庫操作之後返回true(代表操作成功)或者false(代表操作失敗),jsp的程式碼依然會繼續執行,給前臺返回success資訊。如下程式碼:
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%> <jsp:useBean id="OnAdd" class="tree.OnAdd"></jsp:useBean> <% String userInfo=request.getParameter("userInfo"); //獲取前臺傳來的資料 System.out.println(userInfo); OnAdd.setParam(userInfo); //java後臺設定引數 %> <%=OnAdd.trans()%> //後臺操作,返回值為true或false,代表資料庫操作成功與否
到<%=OnAdd.trans()%>這,對於電腦而言只是一個boolean的值而已,如果單純的在前臺輸出訊息,那麼一定是有隱患的。我認為它只代表了提交到jsp部分是成功的,往後它就不管了,但是我們不能不管。
success : function() { //單純的返回
Ext.Msg.alert('資訊', '成功');
},
failure : function() {
Ext.Msg.alert('資訊','錯誤');
}
所以,要在這個返回的基礎上,再一次做出判斷,完整的提交如下:
var values=addForm.getForm().getValues(); //獲得表單所有值,必須getForm以獲得BasicForm Ext.Ajax.request({ //Ajax提交 url : 'Add.jsp', params:{userInfo:Ext.encode(values)}, waitTitle:'正在提交', waitMsg:'正在提交資料,請稍後', success : function(resp) { if(resp.responseText==false) //如果資料庫操作返回false,代表操作失敗 { Ext.Msg.alert('資訊', '不成功');} else{ //二次判斷,防止給出錯誤的提示 Ext.Msg.alert('資訊', '成功'); } }, failure : function() { Ext.Msg.alert('錯誤'); } });
這是目前我所會的東西。感覺前端、中間、後臺傳遞方式有點繁瑣,但是我不會直接用jsp操作資料庫所以只能這樣。以上拙見,便於記錄此時的見解,或許以後會有更好的方式我會學到。