當今互聯網時代下,大量數據的交互變得日益頻繁。因此,網頁需要盡量減少用戶等待時間。這里介紹一種可以讓小數據量的信息快速地在網頁上展示的技術——php ajax導入。
相信大家都曾經遇到這樣的情況:在網頁上點擊某個按鈕,網頁穩穩地卡在原地,不停地刷新,讓人抓狂。這是因為當一個大文件一次性被傳輸給服務器時,會使網頁停止響應。而php ajax導入技術可以將文件分為若干小塊,逐步上傳和處理,保證數據在更短的響應時間內被展示到頁面上。
下面,通過一個簡單的例子來介紹php ajax導入技術的實現過程。假設有一個html頁面,里面有一個上傳文件的按鈕,一個JQuery實現的進度條控制圖和一個展示上傳結果的div塊。先用JQuery實現文件上傳操作:
$(document).ready(function(){ $('#uploadForm').on('submit', function(e){ e.preventDefault(); var formData = new FormData(this); $.ajax({ url: 'upload.php',//上傳地址 type: 'POST', data: formData, beforeSend: function () { $('progress').show(); //顯示進度條 $("#rText").empty(); // 清空上傳返回值 }, xhr: function () { var xhr = $.ajaxSettings.xhr(); if (xhr.upload) { xhr.upload.addEventListener('progress', function (e) { var loaded = e.loaded; //已經上傳的字節數 var total = e.total; //文件總字節數 var percent = Math.floor(100 * loaded / total); //上傳百分比 $('progress').val(percent); //設置進度條值 }); } return xhr; }, success: function (ret) { $('progress').hide(); $("#rText").html(ret); }, contentType: false, processData: false }); }); });
其中:
- formData(this)表示上傳表單中的數據以二進制流的形式發送到服務器端。
- beforeSend在AJAX請求發送之前觸發,用于頁面動態控制。
- xhr是跨瀏覽器的XMLHttpRequest對象,用以監聽上傳進度事件,更新進度條。
- contentType和processData都設置為false,表示jquery不要處理數據,數據仍以二進制流形式發送到服務器端。
接下來,實現PHP上傳文件操作的代碼。在upload.php文件中編寫如下代碼:
if(isset($_FILES["file"])){ $name = $_FILES["file"]["name"]; $tmp_name = $_FILES["file"]["tmp_name"]; $error = $_FILES["file"]["error"]; if($error == UPLOAD_ERR_OK){ move_uploaded_file($tmp_name, "$name"); echo "$name uploaded Success!"; } else{ echo "Upload failed!"; } }
可以看到,當傳輸完成時,通過echo語句在前端頁面上展示文件上傳結果。
綜上所述,可以看到,在php ajax導入技術中,前端頁面實現的效果是上傳進度條的實時顯示;而后端處理的實現主要是利用PHP語言處理文件上傳請求。php ajax導入技術不僅可以提高用于體驗,而且還能節約時間,讓你的網頁更快速地展現數據,為用戶提供更流暢的使用體驗。
下一篇php ajax 彈幕