ExtJs 備忘錄(4)—— Form表單(四) [ 數據提交 ]

一、截圖和示例共用Ext.FormPanel
    1.1  截圖
      
      由于本文主要關注的是表單提交的幾種方式,所以僅用了一個表單項以便于測試和減少示例代碼。
    1.2  示例共用Ext.FormPanel
????<script?type="text/javascript">
????????Ext.onReady(
function()?{
???????????Ext.QuickTips.init();
???????????Ext.form.Field.prototype.msgTarget?
=?'side';
????????????
????????????
var?form1?=?new?Ext.FormPanel({
????????????????frame:?
true,
????????????????renderTo:?Ext.getBody(),
????????????????title:?
'<center>表單提交</center>',
????????????????style:?
'margin-left:auto;margin-right:auto;width:500px;margin-top:8px;',
????????????????labelAlign:?
'right',
????????????????labelWidth:?
170,
????????????????buttonAlign:
'center',
????????????????items:?[
new?TextField('param2','表單項')]
????????????});
????????});
????
</script>
    關于封裝后的表單控件,可以參照系列的前幾篇文章,也可以在后面的源代碼里面找到相關的封裝代碼。
二、普通方式提交
    適合一次操作頁面,即提交后跳轉到另外一個頁面。
    前臺代碼:
????????????????????text:?"普通方式",
????????????????????handler:
function(){
????????????????????????
if(form1.form.isValid()){
????????????????????????????
//只用指定TextField的id或者name屬性,服務器端Form中就能取到表單的數據
????????????????????????????//如果同時指定了id和name,那么name屬性將作為服務器端Form取表單數據的Key
????????????????????????????var?form?=?form1.getForm().getEl().dom;
????????????????????????????form.action?
=?'submit.aspx?method=Submit1&param1=abc';
????????????????????????????
//指定為GET方式時,url中指定的參數將失效,表單項轉換成url中的key=value傳遞給服務端
????????????????????????????//例如這里指定為GET的話,url為:submit.aspx?param2=你輸入的值
????????????????????????????//form.method?=?'GET';//GET、POST
????????????????????????????form.submit();
????????????????????????}
????????????????????}
    代碼說明:這段代碼加在buttons:[{}]里面中。
    后臺代碼:
????///?<summary>
????
///?POST普通提交
????
///?</summary>
????
///?<returns></returns>
????public?void?Submit1()
????{
????????
//數據庫操作
????????string?param1?=?Request.QueryString["param1"];
????????
string?param2?=?Request.Form["param2"];
????????
//Response.Write(string.Format("param1(GET):{0}<br?/>param2(POST):{1}<br?/>",?Request.QueryString["param1"],?Request.Form["param2"]));
????????
//頁面掉轉
????????Response.Redirect("esayadd.aspx");
????}
?    普通提交我也翻閱了不少文章,在3.0版本中可以如上實現比較簡單,或者直接設置FormPanel的standardSubmit:true屬性,則下面默認Ajax提交方式也將變成普通的表單提交。注意這里并不需要設置 onSubmit: Ext.emptyFn等,表單項的id和name指定也在注釋里面有說明了。
三、Ajax方式提交
    3.1 ?默認方式
      客戶端代碼:
????????????????????text:?"默認方式",
????????????????????handler:
function(){?
????????????????????????form1.getForm().submit({
????????????????????????????url:
'submit.aspx?method=Submit2&param1=abc',
????????????????????????????
//method:'POST',
????????????????????????????//waitTitle?:?"提示",
????????????????????????????//waitMsg:?'Submitting?your?data',
????????????????????????????success:?function(form,?action){
????????????????????????????????alert(action.response.responseText);
????????????????????????????},
????????????????????????????failure:?
function(form,?action){
????????????????????????????????alert(action.result.errormsg);
????????????????????????????}
????????????????????????});
????????????????????}
      服務器端代碼:
????///?<summary>
????
///?默認方式
????
///?</summary>
????public?void?Submit2()
????{
????????
string?param1?=?Request.QueryString["param1"];
????????
string?param2?=?Request.Form["param2"];
????????
//必須返回JOSIN形式數據
????????Response.Write("{success:true}");
????????Response.End();
????}
      代碼說明:
        a).  服務器端必須返回JSON格式,success返回true則執行success:?function(form,?action)里面的代碼,返回false則執行failure:?function(form,?action)中的代碼。
        b).  服務器端必須Response.End();
        寫測試代碼的時候就是因為沒有按這個格式返回,一直以為客戶端代碼是否有問題,耽誤了挺多時間。
    3.2  通過Ext.data.Connection提交數據
      客戶端代碼:
????????????????????text:?"Connect方式",
????????????????????handler:
function(){?
????????????????????????
//注意
????????????????????????var?conn?=?new?Ext.data.Connection();
????????????????????????conn.request({
????????????????????????????url:?
'submit.aspx?method=Submit4',
????????????????????????????
//此處與params對應,如果為POST,則服務器端從Request.Form中可以取得到數據,反之從QueryString中取數據
????????????????????????????method:?'POST',//GET
????????????????????????????params:form1.form.getValues(),
????????????????????????????success:?
function(response,?opts)?{
?????????????????????????????????MsgInfo(response.responseText);
????????????????????????????}
????????????????????????});
????????????????????}
      服務器端代碼:
????///?<summary>
????///?Connect方式
????///?</summary>
????public?void?Submit3()
????{
????????string?param1?
=?Request.QueryString["param1"];
????????string?param2?
=?Request.Form["param2"];
????????Response.Write(
"ok");
????????Response.End();
????}
      代碼說明:
        這里就沒有限制返回的數據格式了,但仍需要設置Response.End(),所以默認在PageBase里面設置了此代碼。
    3.3  通過Ext.Ajax提交數據
      客戶端代碼:
????????????????????//Ext.Ajax是繼承Ext.data.Connection而來
????????????????????text:?"Ajax方式",
????????????????????handler:
function(){?
????????????????????????Ext.Ajax.request({
????url:?
'submit.aspx?method=Submit3',
????method:?
'POST',
????
//jsonData://指定需要發送給服務器端的JSON數據。如果指定了該屬性則其它的地方設置的要發送的參數值將無效。
        ????//xmlData://指定用于發送給服務器的xml文檔,如果指定了該屬性則其它地方設置的參數將無效。
        ????params:form1.form.getValues(),//取得key/value對象數組
        ????//指定Ajax請求的回調函數,該函數不管是調用成功或失敗,都會執行。
        ????callback:?function?(options,?success,?response)?{
??????????
if(success){
????????MsgInfo(response.responseText);
????}
????}
????????});
????????????????????}
      服務器端代碼:
????///?<summary>
????
///?Ajax方式
????
///?</summary>
????public?void?Submit4()
????{
????????
string?param1?=?Request.QueryString["param1"];
????????
string?param2?=?Request.Form["param2"];
????????Response.Write(
"yes");
????????Response.End();
????}
    Ajax方式提交總結:
      a).  服務器端處理返回數據后都需要Response.End();
      b).  很明顯,Ajax的特點之一就是不刷新頁面,提高用戶體驗。
      c).  回調分為callback和success+failure兩種方式,后面是將前面的拆成2個函數來處理。
四、下載

    ExtJS2009-10-2.rar

本文轉自博客園農民伯伯的博客,原文鏈接:ExtJs 備忘錄(4)—— Form表單(四) [ 數據提交 ],如需轉載請自行聯系原博主。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/539897.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/539897.shtml
英文地址,請注明出處:http://en.pswp.cn/news/539897.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

web.xml文件的作用

每個javaEE工程中都有web.xml文件&#xff0c;那么它的作用是什么呢&#xff1f;它是每個web.xml工程都必須的嗎&#xff1f; 一個web中可以沒有web.xml文件&#xff0c;也就是說&#xff0c;web.xml文件并不是web工程必須的。 web.xml文件是用來初始化配置信息&#xff1…

linux 掃描mipi設備,VS-RK3399 在linux系統下面調試Mipi camera接口介紹

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓debian系統目前支持Usb camera是沒有問題&#xff0c;走UVC功能接口。那么mipi 接口camera和并口接口的camera&#xff0c;在Debian系統怎么設置呢&#xff0c;其實原理一樣&#xff0c;也走uvc接口封裝函數.下面深圳視壯給大家簡單…

hadoop window 搭建

hadoop 原理參考&#xff1a;用 Hadoop 進行分布式并行編程官方中文文檔&#xff1a;http://hadoop.apache.org/core/docs/r0.18.2/cn/index.html1. 首先安裝 cygwin ssh 參考 windows ssh 搭建2. 搭建hadoop 參考 Cygwin下的Hadoop快速入門-偽分布式模式的查缺補漏 這里…

一篇文章解釋struts常用功能

一、什么是框架&#xff1f; 來源于建筑行業&#xff0c;如果建筑一個茅草屋&#xff0c;不需要框架&#xff0c;如果建造一個幾個億的摩天大樓&#xff0c;就需要框架。 小系統用框架浪費人力&#xff0c;中大型系統用框架。 軟件中的框架&#xff0c;是一種半成品。實現了一些…

webpack 3 零基礎入門教程 #12 - 如何使用模塊熱替換 HMR 來處理 CSS

模塊熱替換 是什么意思&#xff1f; 以前我們使用的 webpack --watch 或 webpack-dev-server 的功能是監聽文件改變&#xff0c;就自動刷新瀏覽器&#xff0c;而這個 模塊熱替換 不用刷新瀏覽器&#xff0c;它是只讓修改到的模塊&#xff0c;才會在瀏覽器上發生相應的變化&…

struts2訪問jsp頁面404

問題描述 在搭建struts2環境的時候&#xff0c;拷貝了web.xml&#xff0c;拷貝了struts.xml&#xff0c;拷貝了jar包。運行&#xff0c;正常&#xff0c;訪問jsp頁面&#xff0c;報404錯誤。 web.xml <?xml version"1.0" encoding"UTF-8"?> <w…

centos7定制linux鏡像,自定制Centos7.3系統鏡像(ISO)

本文主要介紹如何根據官方的Centos鏡像文件&#xff0c;在保留原有默認安裝的RPM包的基礎下&#xff0c;添加自己所需要的RPM包的&#xff0c;最終生成一個自定制版的ISO&#xff0c;節省了寶貴的時間并確保了安裝的定制性。對于其他沒有介紹的修改&#xff0c;后續在實踐中會進…

調用打開另外一個APK

2019獨角獸企業重金招聘Python工程師標準>>> Intent mIntent new Intent(); mIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); ComponentName comp new ComponentName("com.mm.android.direct.gdmssphoneLite", "com.mm.android.direct.gdmsspho…

Jquery Mobile dialog的生命周期

JQuery Mobile對htm5的移動開發絕對是個好用的東西&#xff0c;今天簡單談談JQuery Mobile中的dialog的使用。 1.對話框的彈出。 2.對話框的生命周期。 3.對話框內事件的注冊。 1&#xff09;第一個問題&#xff1a;對話框的彈出。 如果要彈出一個對話框&#xff0c;可以在頁面…

基本linux命令vi,基本linux和vi命令.pdf

基本linux和vi命令DETIBIHORP ___________________YLTCIR 附錄 BTSSIR 基本的 Linux 和ETUP vi 命令 yM lO nC oS___________________I eH sT uM NOR OF IS TL AAI RR OET PA RMT OIK

集成Java內容倉庫和Spring

JCR模塊 Spring Modules的一部分&#xff0c;JCR模塊的主要目標是&#xff1a;以一種類似Spring主分發包中ORM包的方式&#xff0c;簡化使用JSR-170 API進行開發。特點如下&#xff1a; JcrTemplate&#xff0c;允許執行JcrCallback和異常處理&#xff08;將需檢查的JCR異常轉換…

jQuery Mobile彈出對話框后不刷新原頁面,保持原頁面內容不變

使用jQuery Mobile開發移動應用程序時&#xff0c;在一個頁面上彈出對話框&#xff0c;關閉對話框后&#xff0c;發現原來的頁面被刷新了。如果原頁面上有一些已經選擇或者填寫的數據&#xff0c;則這些數據就會丟失。這時候&#xff0c;就需要對對話框的返回按鈕做一些處理&am…

mpi4py linux例子,python-3.x – mpi4py中的共享內存

我使用MPI(mpi4py)腳本(在單個節點上),它與一個非常大的對象一起使用.為了讓所有進程都可以訪問該對象,我通過comm.bcast()分發它.這會將對象復制到所有進程并占用大量內存,尤其是在復制過程中.因此,我想分享像指針而不是對象本身.我發現memoryview中的一些功能對于增強進程內對…

c語言源程序最多可能由組成,一個C語言源程序由若干函數組成,其中至少應含有一個()。...

個C語言源由I am interested in the training course, which _____ at Hilton Hotel in Beijing from March 8 to 12, 2018.程序成“萬物莫不有對”體現了中國傳統哲學的矛盾觀。用戶在進行產品的三維設計時&#xff0c;干函可以采用以下( )的設計方法。數組少意識是人腦對客觀…

oracle的背景

oracle簡介 1977年 美國人 Larry 成立軟件開發實驗室 。 1980年 用c/c開發了世界第一個商用關系型數據庫&#xff08;RDBMS&#xff09;。 1983年 公司更名為Oracle Corporation&#xff08;甲骨文公司&#xff09;。 2009年4月21日&#xff0c;Oracle收購Sun公司。 30多…

Citrix Netscaler版本管理和選擇

Citrix Netscaler版本管理和選擇 來源 http://blog.51cto.com/caojin/1898164 隨著Citrix Netscaler的快速發展&#xff0c;有很多人在維護設備時經常搞不懂Netscaler軟件版本是如何查看和選擇&#xff0c;當前軟件是否需要升級&#xff0c;當前軟件是否穩定等。基于以上問題&a…

樹的基本操作代碼 c語言,二叉樹的基本操作(C語言、源代碼)

二叉樹的基本操作(源代碼)#include "stdio.h"#include "malloc.h"#define MAX 100typedef struct node{int date;struct node *lchild,*rchild;}bitnode,*bitree;bitree createbitree(bitree bt){int m;printf("m");scanf("%d",&m…

oracle實例與數據庫

一、名稱 Oracle數據庫服務器。單叫數據庫或服務器都不全面。 二、組成 oracle數據庫服務器由二部份組成&#xff1a;實例和數據庫 實例&#xff1a; 可理解為對象&#xff0c;看不見。數據庫&#xff1a; 理解為類&#xff0c;看得見的&#xff0c;E:\app\Administrator\…

1.Dao代碼如何編寫?

Dao代碼如何編寫&#xff1f; 1、操作xml數據。數據保存在xml文件里。2、使用jdbc技術。2.1、原始的jdbc操作&#xff0c;connection&#xff0c;statement&#xff0c;resultset。2.2、自定義一個持久層的框架&#xff0c;封裝通用的dao操作方法。2.3、DbUtils組件&#xff0c…

WEB前端面試題匯總整理01

1.JS找字符串中出現最多的字符 例如&#xff1a;求字符串nininihaoa中出現次數最多字符 var str "nininihaoa"; var o {}; for (var i 0, length str.length; i < length; i) {var char str.charAt(i);if (o[char]) {o[char]; //次數加1} else {o[char] 1;…