国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JavaScript Ajax實現異步通信

2019-11-19 18:29:10
字體:
來源:轉載
供稿:網友

JavaScript Ajax實現異步通信

一、瀏覽器與服務器的同步和異步通信

1.同步:是阻塞的,瀏覽器在向服務器發送請求之后一直等待服務器的響應,而沒有做其他事情。
2.異步:非阻塞的,瀏覽器向服務器發送請求之后,繼續執行其他代碼,知道服務器響應,瀏覽器中斷當前的任務,處理服務器響應。

二、沒有Ajax之前瀏覽器是通過iframe來實現異步刷新

1.iframe標簽:iframe標簽通過src連接到一個頁面,其實就是將需要實現異步刷新的內容使用
iframe標簽包裹,

A.對iframe實現整個頁面刷新,其實是通過刷新一個頁面的子頁面來實現異步刷新;

a.主頁面代碼:

<div>通過實現子頁面刷新來實現異步刷新</div><iframe src="../testphp/data.php" frameborder="0"></iframe>

b.php頁面代碼:

<?php  echo 1;?>

B.通過在刷新子頁面的同時在子頁面做一些操作來訪問父頁面元素并且修改該元素的內容

a.主頁面代碼:

<div id="refreshTarget"></div><form action="../php/data.php" method="post" target="targetIframe"><input type="submit" value="提交"></form><iframe name="targetIframe" frameborder="0">iframe</iframe>

b.php頁面代碼:

<?php  echo 1;?><script type="text/javascript">  parent.document.querySelector('#refreshTarget').innerHTML = '刷新成功';</script>

三、Ajax實現異步刷新

1.使用get方法來發送請求:

/** * 使用ajax get方式來驗證用戶名密碼是否正確 * 1.區別于表單,我們需要自己拼接查詢字符串,不是表單提交,可 * 以不為表單添加name屬性 * 2.將數據放在查詢字符串中傳到請求的頁面,然后頁面獲得數據進 * 行操作,然后對前端返回響應數據,解析數據,刷新 */var submit = document.querySelector('#submit');submit.onclick = function(){  var nameValue = document.querySelector('#username').value;  var passValue = document.querySelector('#password').value;  var target = document.querySelector('#refreshTarget');  /* 實例化XMLHttpResquest*/  var xhr = new XMLHttpRequest();  /* 監控xhr對象的狀態,只要xhr.readyState值改變就會觸發事件由alert彈出框的值可以知道    a.以下xhr.readyState值為4的時候表示請求響應結束,數據接收完畢并且可以使用    b.xhr.status值為200表示請求成功  */  xhr.onreadystatechange = function() {    alert(1);    if(xhr.readyState == 4) {      if(xhr.status == 200){        var data = xhr.responseText;        if(data == 1) {          target.innerHTML = '驗證成功';        }else if(data == 2) {          target.innerHTML = '驗證失敗';        }      }    }  }  /* 打開請求*/  var url = '../testphp/inspector.php?username='+nameValue + '&password='+   passValue;  xhr.open('get',url,true); // xhr.readyState = 1;  /* 發送請求*/  xhr.send(null); // xhr.readyState = 2;  alert(2);}

2.使用post方法來發送請求:

/** * 使用ajax post方式來驗證用戶名密碼是否正確 * 1.區別于表單,我們需要自己拼接查詢字符串,不是表單提交,可 * 以不為表單添加name屬性 * 2.將數據放在查詢字符串中傳到請求的頁面,然后頁面獲得數據進 * 行操作,然后對前端返回響應數據,解析數據,刷新 * 3.區別于ajax,get方法就是數據是放在send發送不是添加到查詢字符串 */var submit = document.querySelector('#submit');submit.onclick = function(){  var nameValue = document.querySelector('#username').value;  var passValue = document.querySelector('#password').value;  var target = document.querySelector('#refreshTarget');  /* 實例化XMLHttpResquest*/  var xhr = new XMLHttpRequest();  /* 監控xhr對象的狀態,只要xhr.readyState值改變就會觸發事件由alert彈出框的值可以知道    a.以下xhr.readyState值為4的時候表示請求響應結束,數據接收完畢并且可以使用    b.xhr.status值為200表示請求成功  */  xhr.onreadystatechange = function() {    alert(1);    if(xhr.readyState == 4) {      if(xhr.status == 200){        var data = xhr.responseText;        if(data == 1) {          target.innerHTML = '驗證成功';        }else if(data == 2) {          target.innerHTML = '驗證失敗';        }      }    }  }  /* 打開請求*/  var url = '../testphp/inspector.php?';  xhr.open('post',url,true); // xhr.readyState = 1;  /* 修改請求頭模擬from表單的post提交,  a.設置Content-type可以使得在php頁面中$_POST[‘key']的方式來獲取對應的值,不然的話必  須在$HTTP_RAW_POST_DATA對象中獲取  b.設置'Content-type'既是使用類似表單方式提交數據,所以一下必須對send發送的數據序列  化為‘name=name&value=value'的形式*/  xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');  var data = 'username='+nameValue+'&password='+passValue;  /* 發送請求*/  xhr.send(data); // xhr.readyState = 2;}

請求的php頁面代碼

<?php/* 設置響應數據的內容格式,和字符集*/header('Content-type:text/html;charset=utf-8');/*使用表單的post請求php頁面中可以通過$_POST來獲取*/$username = $_POST['username'];$password = $_POST['password'];if($username == 'admin' && $password == '123'){  echo 1;}else{  echo 2;}?>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 通城县| 张家界市| 新建县| 菏泽市| 潜江市| 庆云县| 芜湖县| 祁连县| 屏东市| 嘉禾县| 同心县| 建昌县| 彝良县| 广东省| 全椒县| 台江县| 马鞍山市| 苍南县| 凤凰县| 蕲春县| 安多县| 安溪县| 綦江县| 高雄市| 南投县| 彩票| 巴青县| 白朗县| 平乐县| 安龙县| 旺苍县| 张家川| 仲巴县| 咸丰县| 香港| 板桥市| 莫力| 加查县| 南郑县| 沁源县| 静宁县|