1. 程式人生 > >關於Extjs表單提交中success的當下見解

關於Extjs表單提交中success的當下見解

目前所做的專案中,用到了一個表單提交。因為不太會用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操作資料庫所以只能這樣。以上拙見,便於記錄此時的見解,或許以後會有更好的方式我會學到。