首頁 >後端開發 >PHP問題 >php中的ajax是什麼意思

php中的ajax是什麼意思

青灯夜游
青灯夜游原創
2022-03-10 15:04:393227瀏覽

在php中,ajax中文意思是“異步的JavaScript和XML技術”,是指一種創建交互式網頁應用的網頁開發技術;ajax可以使網頁實現異步更新,是一種在無需重新載入整個網頁的情況下,能夠更新部分網頁的技術。

php中的ajax是什麼意思

本教學操作環境:windows7系統、javascript1.8.5&&PHP7.1版、Dell G3電腦。

Ajax是什麼意思?

ajax是Asynchronous JavaScript and XML(非同步的JavaScript和XML技術)的縮寫,是指一個建立互動式網頁應用程式的網頁開發技術;

ajax不是新的程式語言,而是一種使用現有標準的新方法。

ajax是一種用於建立快速動態網頁的技術。透過在後台與伺服器進行少量資料交換。 ajax可以使網頁實現非同步更新。這意味著可以在不重新載入整個網頁的情況下,對網頁的某個部分進行更新。而傳統的網頁(不使用ajax)如果需要更新內容,必須重載整個網站頁面。

看完了上述ajax的意思後,我們簡單來看一下ajax的優缺點。

ajax的優點:

1、最大的一點是頁面沒有刷新,使用者的體驗非常好。

2、使用非同步方式與伺服器通信,具有更迅速的回應能力。 。

3、可以把以前一些伺服器負擔的工作轉嫁到客戶端,利用客戶端閒置的能力來處理,減輕伺服器和頻寬的負擔,節省空間和寬頻租用成本。並且減輕伺服器的負擔,ajax的原則是“按需取資料”,可以最大程度的減少冗餘請求,和回應對伺服器造成的負擔。

4、基於標準化的並被廣泛支援的技術,不需要下載外掛程式或小程式。

5、ajax可使網際網路應用程式更小、更快,更友善。

ajax的缺點:

1、ajax不支援瀏覽器back按鈕。

2、安全性問題 AJAX揭露了與伺服器互動的細節。

3、對搜尋引擎的支援比較弱。

4、破壞了程式的異常機制。

5、不容易調試。

php中使用ajax

當使用者在上面的輸入方塊中鍵入字元時,會執行 "showHint()" 函數。此函數由"onkeyup" 事件觸發:

<html>
<head>
<script>
function showHint(str)
{
    if (str.length==0)
    { 
        document.getElementById("txtHint").innerHTML="";
        return;
    }
    if (window.XMLHttpRequest)
    {
        // IE7+, Firefox, Chrome, Opera, Safari 浏览器执行的代码
        xmlhttp=new XMLHttpRequest();
    }
    else
    {    
        //IE6, IE5 浏览器执行的代码
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange=function()
    {
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
        }
    }
    xmlhttp.open("GET","gethint.php?q="+str,true);
    xmlhttp.send();
}
</script>
</head>
<body>

<p><b>在输入框中输入一个姓名:</b></p>
<form> 
姓名: <input type="text" onkeyup="showHint(this.value)">
</form>
<p>返回值: <span id="txtHint"></span></p>

</body>
</html>

原始程式碼解釋:

如果輸入方塊是空的(str.length==0),則函數會清空txtHint 佔位符的內容,並退出該函數。

如果輸入框不是空的,那麼showHint() 會執行下列步驟:

  • 建立XMLHttpRequest 物件

  • 創建在伺服器回應就緒時執行的函數

  • 向伺服器上的檔案傳送請求

  • #請注意新增至URL 末端的參數(q) (包含輸入框的內容)

PHP 檔案

#上面這段透過JavaScript 呼叫的伺服器頁面是名為"gethint.php"的PHP 檔案。

"gethint.php" 中的原始程式碼會檢查姓名數組,然後向瀏覽器傳回對應的姓名:

<?php
// 将姓名填充到数组中
$a[]="Anna";
$a[]="Brittany";
$a[]="Cinderella";
$a[]="Diana";
$a[]="Eva";
$a[]="Fiona";
$a[]="Gunda";
$a[]="Hege";
$a[]="Inga";
$a[]="Johanna";
$a[]="Kitty";
$a[]="Linda";
$a[]="Nina";
$a[]="Ophelia";
$a[]="Petunia";
$a[]="Amanda";
$a[]="Raquel";
$a[]="Cindy";
$a[]="Doris";
$a[]="Eve";
$a[]="Evita";
$a[]="Sunniva";
$a[]="Tove";
$a[]="Unni";
$a[]="Violet";
$a[]="Liza";
$a[]="Elizabeth";
$a[]="Ellen";
$a[]="Wenche";
$a[]="Vicky";

//从请求URL地址中获取 q 参数
$q=$_GET["q"];

//查找是否由匹配值, 如果 q>0
if (strlen($q) > 0)
{
    $hint="";
    for($i=0; $i<count($a); $i++)
    {
        if (strtolower($q)==strtolower(substr($a[$i],0,strlen($q))))
        {
            if ($hint=="")
            {
                $hint=$a[$i];
            }
            else
            {
                $hint=$hint." , ".$a[$i];
            }
        }
    }
}

// 如果没有匹配值设置输出为 "no suggestion" 
if ($hint == "")
{
    $response="no suggestion";
}
else
{
    $response=$hint;
}

//输出返回值
echo $response;
?>

解釋:如果JavaScript 發送了任何文字(即strlen($q ) > 0),則會發生:

  • 尋找匹配JavaScript 發送的字元的姓名

  • ##如果如果找不到匹配,則將回應字串設定為"no suggestion"

  • 如果找到一個或多個符合姓名,則用所有姓名設定回應字串

  • ##把回應傳送至"txtHint" 佔位符

PHP Ajax 跨域問題解決方案本文透過設定Access -Control-Allow-Origin來實作跨域。

例如:客戶端的網域是client.runoob.com,而要求的網域是server.runoob.com。

如果直接使用ajax訪問,會有以下錯誤:

XMLHttpRequest cannot load http://server.runoob.com/server.php. No &#39;Access-Control-Allow-Origin&#39; header is present on the requested resource.Origin &#39;http://client.runoob.com&#39; is therefore not allowed access.

1、允許單一網域存取

指定某網域(http:// client.runoob.com)跨網域訪問,則只需在http://server.runoob.com/server.php檔案頭新增以下程式碼:

header(&#39;Access-Control-Allow-Origin:http://client.runoob.com&#39;);

2、允許多個域名訪問

指定多個網域(http://client1.runoob.com、http://client2.runoob.com等)跨網域訪問,只需在http://server. runoob.com/server.php檔案頭新增以下程式碼:

$origin = isset($_SERVER[&#39;HTTP_ORIGIN&#39;])? $_SERVER[&#39;HTTP_ORIGIN&#39;] : &#39;&#39;;  
  
$allow_origin = array(  
    &#39;http://client1.runoob.com&#39;,  
    &#39;http://client2.runoob.com&#39;  
);  
 
if(in_array($origin, $allow_origin)){  
    header(&#39;Access-Control-Allow-Origin:&#39;.$origin);       
}

3、允許所有網域存取

允許所有網域存取則只需在http:/ /server.runoob.com/server.php檔案頭新增如下程式碼:

header(&#39;Access-Control-Allow-Origin:*&#39;);

推薦學習:《

PHP影片教學

以上是php中的ajax是什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn