原生js使用ajax


AJAX 可以在不重新加載整個頁面的情況下,與服務器交換數據並更新部分網頁內容(默認是異步)

(1)使用ajax會用到XMLHttpRequest()對象

(2)然后使用open方法定義請求方法和請求地址,參數格式open(‘請求方法’,‘請求地址’),請求方法有兩種,get和post

(3)然后使用send方法定義傳輸數據,參數格式send(傳輸數據)

其中請求后台后會得到響應結果,可以通過onreadystatechange狀態事件來監測,其中readyState屬性一共有四個狀態碼:

readyState==1【服務器連接已建立】
readyState==2【請求已接收】
readyState==3【請求處理中】
readyState==4【請求已完成,且響應已就緒】
 

下面是ajax用get的簡單例子

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Ajax-get</title>
    <script>
        function checkname() {
                var name=document.getElementById('username').value;
                var xhr=new XMLHttpRequest();
                xhr.onreadystatechange=function () {
                    if (xhr.readyState==4){
                        alert(xhr.responseText);
                    }
                };
                xhr.open('get','get.php?name='+name);
                xhr.send(null);
        }
    </script>
</head>
<body>
<div style="width: 400px;margin: 0 auto">
    <h1>輸入內容后離開鼠標</h1>
    <p>用戶名:<input type="text" id="username" onblur="checkname()"></p>
</div>
</body>
</html>

這是get.php代碼

print_r($_GET);

  

下面是ajax使用post的簡單例子,這里需要另外加上setRequestHeader("content-type","application/x-www-form-urlencoded"),用來設置請求頭信息

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Ajax-post</title>
    <script>
        function checkname() {
            var nam=document.getElementById('username').value;
            var info="name="+nam;
        
            var xhr=new XMLHttpRequest();
            xhr.onreadystatechange=function () {        //四個請求返回狀態
                if (xhr.readyState==1){
                    console.log(1);
                }
                if (xhr.readyState==2){
                    console.log(2);
                }
                if (xhr.readyState==3){
                    console.log(3);
                }
                if (xhr.readyState==4){
                    console.log(4);
                    alert(xhr.responseText);
                }
            };
            xhr.open('post','post.php');
            xhr.setRequestHeader("content-type","application/x-www-form-urlencoded");
            xhr.send(info);
        }
    </script>
</head>
<body>
<div style="width: 400px;margin: 0 auto">
    <h1>輸入內容后離開鼠標</h1>
    <p>用戶名:<input type="text" id="username" onblur="checkname()"></p>
</div>
</body>
</html>

這是post.php代碼

print_r($_POST);

  

常說的ajax輪詢

就是通過setInterval定時器每段時間執行一次,一直循環,函數使用例子為:

setInterval(執行函數,每次執行間隔時間)

而settimeout是在指定的時間后執行,但只執行一次,函數使用例子為:

settimeout(執行函數,距離執行間隔時間)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM