提到axaj很多人總說很難,什么回調函數呀等等就讓人心煩,其實懂得ajax在js里面是如何實現向服務器請求數據的原理,那么理解ajax也就不是很難了,現在我們一起來看看。
ajax作用:ajax技術的目的是讓javascript發送http請求,與后台通信,獲取數據和信息。實現前后端分離。ajax技術的原理是實例化xmlhttp對象,使用此對象與后台通信。ajax通信的過程不會影響后續javascript的執行,從而實現異步。
在js里面ajax主要解決的問題就是:不刷新當前頁面,把某些數據傳遞給服務器,把某些數據從服務器拿回客戶端。
下面就是具體代碼了。我們寫一個程序讓其前后端分離,前端操作可以讓后端得到響應,並從后端取得響應的數據
一·在html里的五步走策略:
1.建立AJAX核心對象
var xhr=new XMLHttpRequest();
2.添加預加載;指如果xhr對象的預備好的狀態發生了變化時,觸發函數。
xhr.addEventListener("load",loadHandler);
3.建立連接
xhr.open("GET","
http://10.9.164.85:80/index.php?user=zhangsan");
//
建立連接里參數問題:
語法: xhr.open("get", url, true);
備注:open() 方法中 第1個參數指請求的發送方式,值為get或post。 第2個參數指請求的url路徑就是你寫的php文件 的路徑,?后面是所攜帶get所要獲得的相關信息。 第3個參數指請求是異步還是同步,如果寫true表示異步(默認true), 寫false表示同步。
4.向服務器發起請求
xhr.send();
語法: xhr.send();
備注: 如果是get方式發送請求,send()命令中不用寫任何參數 傳遞的數據可以寫在url中,服務器用$_GET[“參數名”]接收。
如果是post方式發送請求,需要設置請求頭才能正確把數據傳遞給后端頁面。 我們這里采用的是get方式,所以不用寫任何參數。
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); xhr.send(“數據名1=數據值&數據名2=數據值”),服務器用$_POST[“參數名”]接收。
5.聲明預加載函數;接收響應
function loadHandler(){
獲取並使用服務器的響應
console.log(xhr.response);
}
二· 在php文件里面
三步驟:
header("content-type:text/html;charset=utf-8");
設置字符編碼
header("Access-Control-Allow-Origin:*");
設置Access-Control-Allow-Origin來實現跨域訪問(因為不同的域名默認不允許之間不可以相互通信)
echo $_GET["user"]."今天心情很好";
所要交給前台的數據
四.實現訪問:
將寫好的php文件放入到phpStydy 的 www的文件夾內,如下圖:
1.找到phpStyle的安裝目錄

2.打開找到www文件夾
3.將你寫好的PHP文件復制到www文件夾里面去,如我剛寫的index.php文件;
4.現在實現簡單的ajax的訪問;
現在運行你的html代碼:
此時就會實現頁面不刷新,就可以訪問php的數據了