AJAX異步傳輸——以php文件傳輸為例


 此文檔解決以下問題:

一、在當前html頁面顯示請求的數據
1.get方式請求 ,不傳遞參數
2.get方式請求 ,傳遞參數
3.post方式請求 ,不傳遞參數
4.post方式請求 ,傳遞參數

二、通過按鈕跳轉到php頁面顯示請求的數據

5.get方式請求 ,傳遞參數


 

1.get方式請求 ,不傳遞參數

1)index01.html頁面:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
       <script src="../js/jquery-3.3.1.min.js" type="text/javascript" charset="utf-8"></script>
       <script type="text/javascript">
           //ajax異步傳輸基本步驟
             function XMLhttpr () {
               //1.創建XMLHttpRequest對象
               //XMLHttpRequest 對象用於和服務器交換數據。
               //為了應對所有的現代瀏覽器,包括 IE5 和 IE6,請檢查瀏覽器是否支持 XMLHttpRequest 對象。
               //如果支持,則創建 XMLHttpRequest 對象。
               //如果不支持,則創建 ActiveXObject :
               var xhtp;
               if(window.XMLHttpRequest){
                   //支持ie6 以上
                   xhtp=new XMLHttpRequest();
               }else{
                   xhtp=new ActiveXObject("Microsoft.XMLHTTP");
               }  
               
               //2.規定請求
               //open(method,url,async)  規定請求的類型、URL 以及是否異步處理請求。
               //method:請求的類型;GET 或 POST
               //url:文件在服務器上的位置
               //async:true(異步)或 false(同步)
               //以get方式請求  php文件 不傳遞參數
               xhtp.open("GET","test.php",true);    

               //3.發送請求
               //send(string) 將請求發送到服務器。
               //string:僅用於 POST 請求
               xhtp.send();
               
               //4.響應請求
               //onreadystatechange  存儲函數(或函數名),每當 readyState 屬性改變時,就會調用該函數。
               xhtp.onreadystatechange=function () {
                   //readyState 存有 XMLHttpRequest 的狀態。從 0 到 4 發生變化。           
                //0: 請求未初始化
                //1: 服務器連接已建立
                //2: 請求已接收
                //3: 請求處理中
                //4: 請求已完成,且響應已就緒
                //status 狀態
                //200: "OK"
                //404: 未找到頁面
                   if(xhtp.readyState==4  &&  xhtp.status==200)
                   //當 readyState 等於 4 且狀態為 200 時,表示響應已就緒:
                   //responseText 獲得字符串形式的響應數據。
                   //responseXML  獲得 XML 形式的響應數據。
                   $("#myDiv").html(xhtp.responseText);//在當前頁面顯示php文件的數據
               }
           }
           $(function () {
               $("#btn").click(XMLhttpr);
           })
       </script>
    </head>
    <body>
        <input type="button" name="btn" id="btn" value="提交" />
        <br />
        結果:<div id="myDiv"></div>
        <br />
    </body>
</html>

 

2)test.php頁面代碼:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
   <p>
       <?php
//php 語法 //echo 輸出 //php可以嵌套到html中 //php的連接符是. 不是+ //$_GET['name'] 獲取get方式請求的參數 參數要用單引號 //isset() 判斷該函數中的參數值是否存在 echo "get請求,不傳遞參數<br/>"; echo "來自php的數據"; echo "<br/>"; ?> </p> </body> </html>

 

3)運行結果:

 

 

2.get方式請求 ,傳遞參數

1)index02.html頁面:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
       <script src="../js/jquery-3.3.1.min.js" type="text/javascript" charset="utf-8"></script>
       <script type="text/javascript">
           //ajax異步傳輸基本步驟
             function XMLhttpr () {
               //1.創建XMLHttpRequest對象
               //XMLHttpRequest 對象用於和服務器交換數據。
               //為了應對所有的現代瀏覽器,包括 IE5 和 IE6,請檢查瀏覽器是否支持 XMLHttpRequest 對象。
               //如果支持,則創建 XMLHttpRequest 對象。
               //如果不支持,則創建 ActiveXObject :
               var xhtp;
               if(window.XMLHttpRequest){
                   //支持ie6 以上
                   xhtp=new XMLHttpRequest();
               }else{
                   xhtp=new ActiveXObject("Microsoft.XMLHTTP");
               }  
               
               //2.規定請求
               //open(method,url,async)  規定請求的類型、URL 以及是否異步處理請求。
               //method:請求的類型;GET 或 POST
               //url:文件在服務器上的位置
               //async:true(異步)或 false(同步)
               //以get方式請求  php文件 傳遞參數
               xhtp.open("GET","test02.php?name="+$("#txtname").val()+"&"+"age="+$("#txtage").val(),true);    

               //3.發送請求
               //send(string) 將請求發送到服務器。
               //string:僅用於 POST 請求
               xhtp.send();
               
               //4.響應請求
               //onreadystatechange  存儲函數(或函數名),每當 readyState 屬性改變時,就會調用該函數。
               xhtp.onreadystatechange=function () {
                   //readyState 存有 XMLHttpRequest 的狀態。從 0 到 4 發生變化。           
                //0: 請求未初始化
                //1: 服務器連接已建立
                //2: 請求已接收
                //3: 請求處理中
                //4: 請求已完成,且響應已就緒
                //status 狀態
                //200: "OK"
                //404: 未找到頁面
                   if(xhtp.readyState==4  &&  xhtp.status==200)
                   //當 readyState 等於 4 且狀態為 200 時,表示響應已就緒:
                   //responseText 獲得字符串形式的響應數據。
                   //responseXML  獲得 XML 形式的響應數據。
                   $("#myDiv").html(xhtp.responseText);//在當前頁面顯示php文件的數據
               }
           }
           $(function () {
               $("#btn").click(XMLhttpr);
           })
       </script>
    </head>
    <body>
        姓名:<input type="text" name="txtname" id="txtname" value="" /><br/>
        年齡:<input type="text" name="txtage" id="txtage" value="" /><br/>
        <input type="button" name="btn" id="btn" value="提交" />
        <br />
        結果:<div id="myDiv"></div>
        <br />
    </body>
</html>

 

2)test02.php頁面:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
   <p>
       <?php

      //$_GET['name']  獲取get方式請求的參數  參數要用單引號
      //isset()  判斷該函數中的參數值是否存在
      echo "get請求,傳遞參數<br/>";
      echo "來自php的數據";
      echo "<br/>";
    
      if(isset($_GET['name'])){
          echo "hello,".$_GET['age']."歲的".$_GET['name'];
      }else{
          echo "error";
      }
      ?>
   </p>
    </body>
</html>

 

3)運行結果:

 

3.post方式請求 ,不傳遞參數

1)index03.html頁面:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
       <script src="../js/jquery-3.3.1.min.js" type="text/javascript" charset="utf-8"></script>
       <script type="text/javascript">
           //ajax異步傳輸基本步驟
             function XMLhttpr () {
               var xhtp;
               if(window.XMLHttpRequest){
                   //支持ie6 以上
                   xhtp=new XMLHttpRequest();
               }else{
                   xhtp=new ActiveXObject("Microsoft.XMLHTTP");
               }  
               
               //2.規定請求
               xhtp.open("POST","test03.php",true);    

               //3.發送請求
               xhtp.send();
               
               //4.響應請求
               xhtp.onreadystatechange=function () {
                   $("#myDiv").html(xhtp.responseText);//在當前頁面顯示php文件的數據
               }
           }
           $(function () {
               $("#btn").click(XMLhttpr);
           })
       </script>
    </head>
    <body>
        <input type="button" name="btn" id="btn" value="提交" />
        <br />
        結果:<div id="myDiv"></div>
        <br />
    </body>
</html>

 

2)test03.php頁面:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
   <p>
       <?php

      echo "post請求請求,不傳遞參數<br/>";
      echo "來自php的數據";
      echo "<br/>";
   
      ?>
   </p>
    </body>
</html>

 

3)運行結果:

 

 


4.post方式請求 ,傳遞參數

1)index04.html頁面:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
       <script src="../js/jquery-3.3.1.min.js" type="text/javascript" charset="utf-8"></script>
       <script type="text/javascript">
           //ajax異步傳輸基本步驟
             function XMLhttpr () {
               //1.創建XMLHttpRequest對象
               var xhtp;
               if(window.XMLHttpRequest){
                   //支持ie6 以上
                   xhtp=new XMLHttpRequest();
               }else{
                   xhtp=new ActiveXObject("Microsoft.XMLHTTP");
               }  
               
               //2.規定請求
              xhtp.open("POST","test04.php",true);
              xhtp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
              //xhtp.send("name=Henry&age=18");
               xhtp.send("name="+$("#txtname").val()+"&"+"age="+$("#txtage").val());    

               //3.發送請求
               //xhtp.send();
               
               //4.響應請求
               xhtp.onreadystatechange=function () {
                   if(xhtp.readyState==4  &&  xhtp.status==200)
                   $("#myDiv").html(xhtp.responseText);//在當前頁面顯示php文件的數據
               }
           }
           $(function () {
               $("#btn").click(XMLhttpr);
           })
       </script>
    </head>
    <body>
        姓名:<input type="text" name="txtname" id="txtname" value="" /><br/>
        年齡:<input type="text" name="txtage" id="txtage" value="" /><br/>
        <input type="button" name="btn" id="btn" value="提交" />
        <br />
        結果:<div id="myDiv"></div>
        <br />
    </body>
</html>

 

2)test04.php頁面:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
   <p>
       <?php
   
      echo "post請求請求,傳遞參數<br/>";
      echo "來自php的數據";
      echo "<br/>";
      if(isset($_POST['name'])){
          echo "hello,".$_POST['age']."歲的".$_POST['name'];
      }else{
          echo "error";
      }
      ?>
   </p>
    </body>
</html>

 

3)運行結果:

 

 

5.get方式請求 ,傳遞參數

1)index05.html頁面:

 

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
       <script src="../js/jquery-3.3.1.min.js" type="text/javascript" charset="utf-8"></script>

    </head>
    <body>
        <form action="test05.php" method="get" id="myform">
            
        姓名:<input type="text" name="txtname" id="txtname" value="" /><br/>
        年齡:<input type="text" name="txtage" id="txtage" value="" /><br/>
        <input type="submit" name="btn" id="btn" value="提交" />
        <br />
        結果:<div id="myDiv"></div>
        <br />
            
        </form>
        
    </body>
</html>

 

 

 

2)test05.php頁面:

 

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
   <p>
       <?php

    //echo 輸出
    //$_GET['name']  獲取get方式請求的參數  參數要用單引號
    //isset()  判斷該函數中的參數值是否存在
//如果通過submit按鈕提交表單,則在php中通過$_GET或$_POST獲取的參數名應該是input元素的name屬性
echo "get請求,傳遞參數<br/>"; echo "來自php的數據"; echo "<br/>"; if(isset($_GET['txtname'])){ echo "hello,".$_GET['txtage']."歲的".$_GET['txtname']; }else{ echo "error"; } ?> </p> </body> </html>

 

 

 

3)運行結果:

 

 

正文結束!~~

 


免責聲明!

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



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