1. 程式人生 > >ajaxForm() 和 ajaxSubmit() 的用法與區別

ajaxForm() 和 ajaxSubmit() 的用法與區別

一、Query.form.js 介紹

Query.form.js 是一個 form 外掛,可以實現表單提交併在當前頁面中處理返回值,即 html 中提交表單並實現不跳轉頁面處理返回值。

二、下載地址

http://malsup.github.io/jquery.form.js

三、ajaxForm() 和 ajaxSubmit() 的用法

1、引入 js 檔案

<script src="./static/js/jquery-3.3.1.min.js"></script>
<script src="./static/js/jquery.form.js"
></script>

2、ajaxForm() 使用

 $(function () {
        $('#myForm').ajaxForm({
            beforeSubmit: validate,
            success: function(data) {
               //返回資料處理
                alert(data);
            }
        });
    });

function validate() {
       ...
}

3、ajaxSubmit() 使用

 $(function () {
        $('#myForm').submit(function () {
            $('#myForm').ajaxSubmit({
                beforeSubmit: validate,
                success: function(data) {
                    //返回資料處理
                    alert(data);
                }
            });
            return false
; //阻止表單預設提交 }); }); function validate() { ... }

4、前端 html 程式碼

<form class="login-table" name="login" id="myForm" action="../controllers/login.php" method="post">
    <div class="login-left">
        <label class="username">使用者名稱</label>
        <input type="text" class="yhmiput" name="username" placeholder="Username" id="username">
    </div>
    <div class="login-right">
        <label class="passwd">密碼</label>
        <input type="password" class="yhmiput" name="password" placeholder="Password" id="password">
    </div>
    <div class="login-btn">
        <button type="submit">登入</button>
    </div>
</form>

5、引數介紹

ajaxForm() 和 ajaxSubmit() 的可選引數項物件:
ajaxForm 和 ajaxSubmit 都支援大量的可選引數,它們通過可選引數項物件傳入。可選引數項物件只是一個簡單的 JavaScript 物件,裡邊包含了一些屬性和一些值:

target

用server端返回的內容更換指定的頁面元素的內容。 這個值可以用 jQuery 選擇器來表示, 或者是一個 jQuery 物件, 一個 DOM 元素。
預設值: null

url

表單提交的地址。
預設值: 表單的 action 的值

type

表單提交的方式,’GET’ 或 ‘POST’.
預設值: 表單的 method 的值 (如果沒有指明則認為是 ‘GET’)

beforeSubmit

表單提交前執行的方法。
這個可以用在表單提交前的預處理,或表單校驗。如果 beforeSubmit 指定的函式返回 false,則表單不會被提交。
beforeSubmit 函式呼叫時需要3個引數:陣列形式的表單資料,jQuery 物件形式的表單物件,可選的用來傳遞給 ajaxForm/ajaxSubmit 的物件。
陣列形式的表單資料是下面這樣的格式:[ { name: ‘username’, value: ‘jresig’ }, { name: ‘password’, value: ‘secret’ } ]
預設值: null

success

當表單提交後執行的函式。 如果 success 回撥函式被指定,當 server 端返回對錶單提交的響應後,這個方法就會被執行。 responseText 和 responseXML 的值會被傳進這個引數 (這個要依賴於dataType的型別).
預設值: null

dataType

指定伺服器響應返回的資料型別。其中之一: null, ‘xml’, ‘script’, 或者 ‘json’. 這個 dataType 選項用來指示你如何去處理server端返回的資料。 這個和 jQuery.httpData 方法直接相對應。
‘xml’: 如果 dataType == ‘xml’,則 server 端返回的資料被當作是 XML 來處理, 這種情況下 success 指定的回撥函式會被傳進去 responseXML 資料
‘json’: 如果 dataType == ‘json’,則 server 端返回的資料將會被執行,並傳進 success 回撥函式
‘script’: 如果 dataType == ‘script’,則 server 端返回的資料將會在上下文的環境中被執行
預設值: null

semantic

一個布林值,用來指示表單裡提交的資料的順序是否需要嚴格按照語義的順序。一般表單的資料都是按語義順序序列化的,除非表單裡有一個type=”image”元素,所以只有當表單裡必須要求有嚴格順序並且表單裡有type=”image”時才需要指定這個。
預設值: false

resetForm

布林值,指示表單提交成功後是否需要重置。
預設值: null

clearForm

布林值,指示表單提交成功後是否需要清空。
預設值: null

iframe

布林值,用來指示表單是否需要提交到一個iframe裡。 這個用在表單裡有 file 域要上傳檔案時。
預設值: false

四、ajaxForm() 和 ajaxSubmit() 的區別

這兩種方法主要的卻別是 ajaxForm() 不能主動提交 form,函式只是為提交表單做準備需要以 submit 來觸發提交;而 ajaxSubmit() 會主動提交表單,同時可以在點選其他按鈕時也可以觸發提交,不一定是submit按鈕。

 $("form").ajaxForm();

等價於

$("form").submit(function(){
            $(this).ajaxSubmit();
            return false;        //ajaxSubmit 會自動提交表單,想要阻止自動提交,必須return false;
        })

1: html中提交表單並實現不跳轉頁面處理返回值
2: jQuery form外掛的使用–ajaxForm()和ajaxSubmit()的可選引數項物件
3: ajaxForm和ajaxSubmit的用法與區別