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.mzph.cn/news/539897.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

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;可以在页面…

c语言源程序最多可能由组成,一个C语言源程序由若干函数组成,其中至少应含有一个()。...

个C语言源由I am interested in the training course, which _____ at Hilton Hotel in Beijing from March 8 to 12, 2018.程序成“万物莫不有对”体现了中国传统哲学的矛盾观。用户在进行产品的三维设计时&#xff0c;干函可以采用以下( )的设计方法。数组少意识是人脑对客观…

Citrix Netscaler版本管理和选择

Citrix Netscaler版本管理和选择 来源 http://blog.51cto.com/caojin/1898164 随着Citrix Netscaler的快速发展&#xff0c;有很多人在维护设备时经常搞不懂Netscaler软件版本是如何查看和选择&#xff0c;当前软件是否需要升级&#xff0c;当前软件是否稳定等。基于以上问题&a…

oracle实例与数据库

一、名称 Oracle数据库服务器。单叫数据库或服务器都不全面。 二、组成 oracle数据库服务器由二部份组成&#xff1a;实例和数据库 实例&#xff1a; 可理解为对象&#xff0c;看不见。数据库&#xff1a; 理解为类&#xff0c;看得见的&#xff0c;E:\app\Administrator\…

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;…

c语言 文件游程统计,游程 码表 如何形成

游程 码表 如何形成求一个程序 将下表用huffman 树存储表示用传统的霍夫曼建立的树 好像不能形成此码表。我感觉应该有一个特等的算法。我也试了好几种方法&#xff0c;感觉都不行&#xff0c;希望大家给点建议。(码表 要利于编码和解码)(部分码表)白游程 码子 黑游程 码子(长…

2.ORM思想

一、ORM思想介绍 orm是一种思想&#xff0c;是dao层代码的一种编写思想。其中&#xff1a;o代表Object&#xff0c;java对象&#xff1b;r代表Relation&#xff0c;关系型数据库&#xff1b;m代表Map&#xff0c;java对象和关系型数据库表的映射关系。该思想主张&#xff1a;1、…

android 字体颜色选择,Android中颜色选择器和改变字体颜色的实例教程

易采站长站为您分析Android中颜色选择器和改变字体颜色的实例教程,其中改变字体颜色用到了ColorPicker颜色选择器,需要的朋友可以参考下1.构建一张七彩图:我们经常看到这种样子的颜色选择器吧..然后其实右边的亮度选择是:这样我们的代码就可以进行啦...// 创建七彩图片private …

新版vue-cli搭建多页面应用

2019独角兽企业重金招聘Python工程师标准>>> 折腾了好久&#xff0c;终于把坑踩完了&#xff0c;废话不多说&#xff0c;上教程~ github地址&#xff1a;https://github.com/guolihuaGitHub/vue-cli-multipage 另外推荐一下我另一篇博客&#xff0c;我觉得这篇好用&…

2017 Google 开发者大会直播入口

今年&#xff0c;Google 开发者大会再度来袭&#xff01;大会将于 12 月 13 日和 14 日在上海举办&#xff0c;主题涵盖机器学习 (Machine Learning)、Android、移动网络&#xff08;Mobile Web)、TensorFlow、Firebase、云服务 (Cloud)、AR/VR、设计 (Design) 以及更多开发者相…

日志组件slf4j介绍及配置详解

2019独角兽企业重金招聘Python工程师标准>>> 原文出自 1 基本介绍 每一个Java程序员都知道日志对于任何一个Java应用程序尤其是服务端程序是至关重要的&#xff0c;而很多程序员也已经熟悉各种不同的日志库&#xff0c;如java.util.logging、Apache log4j、logback。…

count(*),count(1),count(0)效率

网上文章很多&#xff0c;今天分别跑了一张2000多万行的表&#xff0c;该表没有主键&#xff0c;索引&#xff0c;约束条件。 结果是&#xff0c;效率差不多

android 转场动画兼容问题,【Android】关于ARouter转场动画的问题

实现从主页跳转到搜索页&#xff0c;再从搜索页回退主页withTransition(int resId,int resId)这个方法两个参数第一个的意思是&#xff0c; A 到 B&#xff0c; B 的入场动画第二个的意思是&#xff0c;A 到 B&#xff0c; A 的出场动画即&#xff0c;入场动画&#xff0c;出场…

react不同环境不同配置angular_叫雨山斗鸡优势在哪里,环境不同,价值不同

叫雨山斗鸡优势在哪里&#xff0c;环境不同&#xff0c;价值不同 原生态高端食材网站&#xff0c;专注金线莲、散放斗鸡、斗鸡蛋、野生蜂蜜、小耳黑猪肉等云南原生态套餐定制的高端食材供应商。云南叫雨山斗鸡叫雨山斗鸡原生态饲养 叫雨山斗鸡源自于鲁西斗鸡&#xff0c;初代斗…

android studio 布局拖拽,为什么使用android studio不能像老师一样在Design里随意拖动控件...

qq_喷泉_02017-07-25 13:08已采纳xmlns:app"http://schemas.android.com/apk/res-auto"xmlns:tools"http://schemas.android.com/tools"android:layout_width"match_parent"android:layout_height"match_parent"tools:context"co…

Oracle自定义函数(不断更新)

1、将数字转为ip地址&#xff1a;IPAdd_DotNumFormat create or replace FUNCTION IPAdd_DotNumFormat(v_LfValue number)return varchar2 asv_DotNumString varchar2(50);v_flg Integer;v_NewLfValue number;v_tmp Integer;v_P1 Integer;v_P2 Integer;v_P3 Integer;v_P4…

element ui select设置不显示不存在的项_appium—等待时间设置方法

引言&#xff1a;在做UI自动化的过程中&#xff0c;我们有时候为了等待元素的出现&#xff0c;需要加一些等待时间来帮助&#xff0c;但是有时候时间加的过多或者过少&#xff0c;这个没有办法判断&#xff0c;今天就介绍几种等待时间&#xff0c;我们看看那种适合我们 一、强制…