zoukankan      html  css  js  c++  java
  • Jquery.Form 异步提交表单实例

    http://www.aqee.net/docs/jquery.form.plugin/jquery.form.plugin.html#getting-started

    1. 在你的页面里写一个表单。一个普通的表单,不需要任何特殊的标记:

    <form id="myForm" method="post" action="/Home/AjaxForm">
    <div>
    Name:<input id="username" name="username" type="text" /> &nbsp;
    Password:<input id="password" name="password" type="text" />
    <br />
    <input type="submit" value="submit async" id="lnkSubmit" />
    </div>
    </form>

    在没有Jquery.Form组件的时候,提交表单,页面会进入阻塞模式,等待服务器端的响应。

    2. 引入jQuery和Form Plugin Javascript脚本文件并且添加几句简单的代码让页面在DOM加载完成后初始化表单:

    <head> 
        <script type="text/javascript" src="path/to/jquery.js"></script>
        <script type="text/javascript" src="path/to/form.js"></script>
     
        <script type="text/javascript">
            // wait for the DOM to be loaded
            $(document).ready(function() {
                // bind 'myForm' and provide a simple callback function
                // 为myform绑定ajaxForm异步提交事件,并提供一个简单的回调函数。
                $('#myForm').ajaxForm(function() {
                    alert("Thank you for your comment!");
                });
            });
        </script>
    </head>
     
    加上jquery.form组件后,提交表单时,页面不会再同步提交,而是由js做异步提交,因此提交后页面不会有刷新。
     
    3. 加入能够与服务器端进行交互的回调函数。
    $(document).ready(function () {           
                      //options是一个ajaxForm的配置对象。
                var options = {
                    //target: '#output1',   // target element(s) to be updated with server response 
                    //beforeSubmit: showRequest,  // pre-submit callback 
                    success: callBackFunc  // post-submit callback 
    
                    // other available options: 
                    //url:       url         // override for form's 'action' attribute 
                    //type:      type        // 'get' or 'post', override for form's 'method' attribute 
                    //dataType:  null        // 'xml', 'script', or 'json' (expected server response type) 
                    //clearForm: true        // clear all form fields after successful submit 
                    //resetForm: true        // reset the form after successful submit 
    
                    // $.ajax options can be used here too, for example: 
                    //timeout:   3000 
                };
    
                // bind form using 'ajaxForm' 
                $('#myForm').ajaxForm(options);
            });
            
            // responseText是服务端的响应值。statusText是页面
            // 提交状态值,success表示成功。
            function callBackFunc(responseText, statusText) {
                if (statusText == 'success') {
                    alert(responseText);
                }
                else{
                     alert(“服务端错误!”);
                 }
            }
    如果返回的是json数据则回调函数可以这么写
    function resultFunction(responseText,statusText) {
            if (statusText == 'success') {
                if (responseText.code == 1) {
                    alert(responseText.message);
                } 
                else {
                    alert('error occurs!');
                }
            }
            else {
                alert('服务器错误!');
            }
        }

    服务端的代码如下

            [HttpPost]
            public ActionResult AjaxForm(FormCollection form)
            {
                string message = "Name:" + form["username"] + " PWD: "+form["password"]  ;
                //return Content(message);
                return Json(new { code = 1, message = message });
            }
     
    4. 加入提交前的数据校验函数
     
    为options对象添加 beforeSubmit属性
    var options = {
                    //target: '#output1',   // target element(s) to be updated with server response 
                    beforeSubmit: checkData,  // pre-submit callback 
                    success: callBackFunc  // post-submit callback 
    
                    // other available options: 
                    //url:       url         // override for form's 'action' attribute 
                    //type:      type        // 'get' or 'post', override for form's 'method' attribute 
                    //dataType:  null        // 'xml', 'script', or 'json' (expected server response type) 
                    //clearForm: true        // clear all form fields after successful submit 
                    //resetForm: true        // reset the form after successful submit 
    
                    // $.ajax options can be used here too, for example: 
                    //timeout:   3000 
                };
    
     // pre-submit callback 
            function checkData(formData, jqForm, options) {
                // formData is an array; here we use $.param to convert it to a string to display it 
                // but the form plugin does this for you automatically when it submits the data 
                //var queryString = $.param(formData);
    
                // jqForm is a jQuery object encapsulating the form element.  To access the 
                // DOM element for the form do this: 
                var formElement = jqForm[0]; 
    
                //alert('About to submit: \n\n' + queryString);
    
                // here we could return false to prevent the form from being submitted; 
                // returning anything other than false will allow the form submit to continue 
                //return true;
                if ($(formElement).find("#username").val() == "") {
                    alert("please enter username!");
                    return false;
                } else {
                    return true;
                }
            } 
    验证用户名是否为空,是则提示输入,并取消表单提交。
  • 相关阅读:
    17373194陈丛文第一次项目作业
    软工第一次博客作业
    软工热身作业
    OO第4次博客作业
    OO第三次博客作业
    oo第二次总结作业
    OO第一次总结作业
    UML系列——OO Unit4分析和学期总结
    JML规格编程系列——OO Unit3分析和总结
    电梯系列——OO Unit2分析和总结
  • 原文地址:https://www.cnblogs.com/philzhou/p/2342809.html
Copyright © 2011-2022 走看看