php使用jquery Form ajax 提交表單,並上傳文件


在html5中我們通過FormData就可以ajax上傳文件數據,不過因為兼容問題。我們選用jquery.form.min.js來進行ajax的表單提交。
 
一、jquery.form.js下載地址:
http://malsup.com/jquery/form/#download
 
二、jquery.form.js提供的方法如下:
函數名 描述 參數 例子
ajaxForm() 增加所有需要的事件監聽器,為ajax提交表單做准備。ajaxForm並不能提交表單。在document的ready函數中,使用ajaxForm來為ajax提交表單進行准備。 接受0個或1個參數。參數可以是一個回調函數,也可以是一個Options對象。 $("#formid").ajaxForm();
ajaxSubmit() 使用ajax提交表單。 接受0個或1個參數。參數可以是一個回調函數,也可以是一個Options對象。 $("#formid").ajaxSubmit();
formSerialize() 將表單串行化(或序列化)為一個查詢字符串。這個方法將返回以下格式的字符串:name1=value1&name2=value2。 $("#formid").formSerialize();
fieldSerialize() 將表單的字段元素串行化(或序列化)為一個查詢字符串。當只有部分表單字段需要進行串行化(或序列化)時,使用這個就很方便了。 返回以下格式的字符串:name=value1&name2=value2。 $("#formid .specialFields").fieldSerialize();
fieldValue() 返回匹配插入數組中的表單元素值。該方法以數組的形式返回數據。如果元素值被判定可能無效,則數組為空。 $("#formid :password").fieldValue();
resetForm() 將表單恢復到初始狀態。 $("#formid").resetForm();
clearForm() 清除表單元素。該方法將所有的text、password、textarea置空,清除select元素中的選定,以及所有radio按鈕和checkbox按鈕重置為非選定狀態。 $("#formid").clearForm();
clearFields() 清除字段元素。只有部分表單元素需要清除時方便使用。 $("#formid .specialFields").clearFields();

三、options對象參數:
target 指明頁面中由服務器響應進行更新的元素。元素的值可能被指定為一個jQuery選擇器字符串、一個jquery對象、一個DOM元素。 默認值:null
url 指定提交表單數據的URL。 默認值:表單的action屬性值
type 指定提交表單數據的方法(method):"GET"或"POST"。 默認值:GET
beforeSubmit 表單提交前被調用的回調函數。如果回調函數返回false表單將不被提交。回調函數帶三個調用參數:數組形式的表單數據,jQuery表單對象,以及傳入ajaxForm/ajaxSubmit中的Options對象。 默認值:null
success 表單成功提交后調用的回調函數。然后dataType選項值決定傳回responseText還是responseXML的值。 默認值:null
dataType 返回的數據類型:null、"xml"、"script"、"json"其中之一。 默認值:null
resetForm 表示如果表單提交成功是否進行重置。 默認值:null
clearForm 表示如果表單提交成功是否清除表單數據。 默認值:null

四、例子如下:
index.html代碼如下:
<!DOCTYPE HTML>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>ajax表單處理</title>
</head>
<body>
    <form class="upForm" action="./data.php" method="post" enctype="multipart/form-data">
        <table>
            <tr>
                <td>用戶名:</td>
                <td><input type="text" name="uname" /></td>
            </tr>
            <tr>
                <td>密碼:</td>
                <td><input type="password" name="uname" /></td>
            </tr>
            <tr>
                <td>性別:</td>
                <td>
                    <input type="radio" name="sex" value="0" checked />男
                    <input type="radio" name="sex" value="0" />女
                </td>
            </tr>
            <tr>
                <td>證件:</td>
                <td><input type="file" name="upfile" /></td>
            </tr>
            <tr>
                <td></td>
                <td><input type="button" value="提交" /></td>
            </tr>
        </table>
    </form>
</body>
<script type="text/javascript" src="./jquery.js"></script>
<script type="text/javascript" src="./jquery.form.min.js"></script>
<script type="text/javascript">
    $(function() {
        $(".upForm input[type='button']").on("click", function() {
            var options = {
                "beforeSubmit" : checkForm,
                "success" : resultForm,
                "resetForm" : true,
                "dataType" : "json"
            };
            $(".upForm").ajaxSubmit(options);
        });

        function checkForm(formData, form, options) {
            //表單提交前處理
        }

        function resultForm(data, status) {
            //表單完成
            console.log(data);
        }
    });
</script>
</html>
data.php代碼如下:
<?php
var_dump($_POST);
var_dump($_FILES);
測試如下:
php使用jquery Form ajax 提交表單,並上傳文件 - 懷素真 - 因上努力 果上隨緣
 表單中的數據和文件成功的提交給了服務器處理。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM