什么是ajax?ajax(Asynchronous JavaScript and XML),異步的JavaScript和XML技術,是一種在無需重新加載整個頁面的情況下,通過與服務器進行少量數據交換,動態(tài)改變部分網頁內容并實現局部刷新的技術。在網頁中較為常見的應用是實現無需刷新地提交表單數據或者實現無需刷新地加載一些動態(tài)數據,這種技術體驗非常好。
ajax一般通過XMLHttpRequest對象(簡稱XHR)來向服務器發(fā)送請求和接收響應數據。咱們來看一個簡單的例子:
var xmlhttp; // 兼容不同的瀏覽器 if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp = new XMLHttpRequest(); } else { // code for IE6, IE5 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { // 當響應完成時執(zhí)行的回調函數 document.getElementById("myDiv").innerHTML = xmlhttp.responseText; } } xmlhttp.open("GET", "demo.php", true); xmlhttp.send();
這段代碼可以通過GET方法向服務器請求demo.php文件,并將返回的內容顯示在id為myDiv的div元素中。
而在這個ajax請求中,服務器端的代碼則需要通過PHP來編寫。一般情況下,服務器端的代碼需要根據請求的參數值做出相應的響應,比如返回一些DB中的數據、進行文件上傳等。在PHP中,響應ajax請求一般分為兩個步驟。
第一步是處理請求參數,這一步在所有代碼的核心,可以根據請求的參數設置一些變量或者查詢數據庫,根據結果生成頁面的內容,完成后交由第二步處理,以供ajax請求響應時返回。
$name = $_POST['name']; // 獲取POST參數 // 連接數據庫,查詢$name相關的數據,并返回結果集 // 生成頁面內容后返回 echo $result;
第二步是在處理完請求參數和生成頁面內容后,將結果返回給ajax請求,即響應ajax請求。
header('Content-type: application/json'); // 定義返回類型,這里用JSON echo json_encode($result); // 將結果集轉化為json后返回
注意,返回的類型需要與請求的類型相對應,在上面的例子中,請求類型是GET,因此返回的內容極為HTML(this.responseText),如果是POST類型的請求,可能返回的是JSON,或者一些其他格式的數據。
以上是在PHP中響應ajax請求的基本步驟,要注意的細節(jié)有很多,比如請求的參數盡量使用http_build_query進行構造,響應的數據類型應與請求的類型相符,需要設置http狀態(tài)碼,響應的內容應安全,避免SQL注入等,這樣才能寫出優(yōu)質的ajax響應代碼。
總的來說,通過ajax實現動態(tài)加載數據是一種非常好的技術,同時也需要注意在服務器端的響應代碼中細節(jié)的把控,希望本篇文章能夠對大家開發(fā)中對ajax解析php的理解有所幫助!