jQuery Ajax上傳文件

模擬前臺html頁面

1.jQuery插件AjaxFileUpload用來實現ajax文件上傳

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
        <script src="ajaxfileupload.js"></script>
    </head>
    <body>
        <form enctype="multipart/form-data" method="post">
            <input id="img" type="file" name="img" class="input">
            <button class="button" id="buttonUpload" onclick="return ajaxFileUpload();">Upload</button>
        </form> 
        <div id="showtext"></div>
        <img src="" alt="" id="showImg"/>
        <script type="text/javascript"> 
        function ajaxFileUpload(){ 
            $.ajaxFileUpload({ 
                url:"upfile.php", 
                secureuri:false, 
                fileElementId:'img', 
                dataType: 'text', 
                processData:false,
                success: function (data) { 
                    document.getElementById('showImg').src=data;
                } 
            }) 
            return false;
        } 
        </script> 
    </body>
</html>

2.通過jQuery Ajax使用FormData對象上傳文件

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <form enctype="multipart/form-data" method="post">
            <input id="img" type="file" name="img">
            <input type="button" id="button" value="提交">
        </form> 
        <img src="" id="tp"/>
    </body>
    <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
    <script type="text/javascript">
        $('#button').click(function(){
            console.log("111111")
            var formData = new FormData();
            formData.append("img",document.getElementById('img').files[0]);
            console.log(formData);
            $.ajax({
                type:"post",
                url:"upfile.php",
                //異步
                async:true,
                data:formData,
                //processData 默認為false,當設置為true的時候,jquery ajax 
                //Jquery是否對你的數據進行預處理
                processData:false,
                //Jquery不要修改請求內容類型
                contentType:false,
                success:function(data){
                    console.log(data);
                    document.getElementById('tp').src = data;
                }
            })
        })  
    </script>
</html>

后臺PHP

<?php
    if(!empty($_FILES)){
        move_uploaded_file($_FILES['img']['tmp_name'],$_FILES['img']['name']);
        echo $_FILES['img']['name'];
    }else{
        echo "error";
    }
?>

jQery Ajax參數

參數名 類型 描述
url string (默認: 當前頁地址) 發送請求的地址
type String (默認: "GET") 請求方式 ("POST" 或 "GET"), 默認為 "GET"。
async Boolean (默認: true) 默認設置下,所有請求均為異步請求。如果需要發送同步請求,請將此選項設置為 false。注意,同步請求將鎖住瀏覽器,用戶其它操作必須等待請求完成才可以執行。
contentType String 告訴服務器從瀏覽器提交過來的數據格式。
dataType String 告訴服務器瀏覽器可以想要返回的數據格式類型,同時JQuery也會根據該類型對返回的數據進行處理,類型:
"xml" : 返回 XML 文檔,可用 jQuery 處理。
"html" : 返回純文本 HTML 信息;包含 script 元素
"script" : 返回純文本 JavaScript 代碼。不會自動緩存結果
"json": 返回 JSON 數據 。JQuery將返回的字符串格式數據自動轉化為Javascript對象,便于直接使用obj.property格式訪問
processData Boolean (默認: true) 默認情況下,發送的數據將被轉換為對象(技術上講并非字符串) 以配合默認內容類型 "application/x-www-form-urlencoded"。如果要發送 DOM 樹信息或其它不希望轉換的信息,請設置為 false。

我的博客鏈接

更多資源就在我的gitHubhttps://github.com/huzixian2017/huzixian2017.github.io

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容