今天我們要講述一個非常重要的技術:JavaScript API Ajax,它可以讓我們在不刷新頁面的情況下,與服務器進行異步通信,可以實現動態的數據更新,改善用戶體驗。
例如,我們可以利用Ajax實現一個動態搜索框功能,當用戶輸入關鍵字時,無需提交表單,而是實時查詢數據庫并呈現搜索結果。
function search(str) { if(str.length==0) { document.getElementById("result").innerHTML=""; return; } var xmlhttp=new XMLHttpRequest(); xmlhttp.onreadystatechange=function() { if(xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("result").innerHTML=xmlhttp.responseText; } } xmlhttp.open("GET","search.php?q="+str,true); xmlhttp.send(); }
以上代碼使用XMLHttpRequest對象向后臺發送GET請求,請求的url為“search.php?q=”+str,其中str為用戶輸入的關鍵字。后臺通過str查詢數據庫并返回查詢結果,我們在回調函數中將查詢結果顯示在頁面上。
除了查詢,我們還可以使用Ajax實現文件上傳功能。例如,用戶通過一個表單選擇頭像圖片,點擊上傳按鈕時,該圖片被異步上傳至服務器,并動態更新用戶信息。
function upload() { var file=document.getElementById("file").files[0]; var formdata=new FormData(); formdata.append("file",file); var xhr=new XMLHttpRequest(); xhr.upload.addEventListener("progress",function(event) { if(event.lengthComputable) { var percent=Math.round(event.loaded*100/event.total); document.getElementById("progress").innerHTML=percent+"%"; } },false); xhr.onreadystatechange=function() { if(xhr.readyState==4 && xhr.status==200) { document.getElementById("response").innerHTML=xhr.responseText; } }; xhr.open("POST","upload.php",true); xhr.send(formdata); }
以上代碼利用FormData對象構造表單數據,并利用XMLHttpRequest對象向后臺發送POST請求,后臺接收到表單數據并更新用戶信息。我們還可利用xhr.upload對象監聽上傳事件并實時更新上傳進度。
綜上所述,JavaScript API Ajax已成為Web開發中不可或缺的技術,我們可以利用它實現高效、動態、用戶友好的交互體驗。