日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

什么是ajax【解释和实例】

發布時間:2024/1/1 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 什么是ajax【解释和实例】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

AJAX全稱為“Asynchronous JavaScript and XML”(異步JavaScript和XML),是指一種創建交互式網頁應用的網頁開發技術。
主要包含了以下幾種技術
Ajax(Asynchronous JavaScript + XML)的定義
基于web標準(standards-based presentation)XHTML+CSS的表示;
使用 DOM(Document Object Model)進行動態顯示及交互;
使用 XML 和 XSLT 進行數據交換及相關操作;
使用 XMLHttpRequest 進行異步數據查詢、檢索;
使用 JavaScript 將所有的東西綁定在一起。英文參見Ajax的提出者Jesse James Garrett的原文。
類似于DHTML或LAMP,AJAX不是指一種單一的技術,而是有機地利用了一系列相關的技術。事實上,一些基于AJAX的“派生/合成”式(derivative/composite)的技術正在出現,如“AFLAX”。
AJAX的應用使用支持以上技術的web瀏覽器作為運行平臺。這些瀏覽器目前包括:Mozilla、Firefox、Internet Explorer、Opera、Konqueror及Safari。但是Opera不支持XSL格式對象,也不支持XSLT。

與傳統的web應用比較
傳統的web應用允許用戶填寫表單(form),當提交表單時就向web服務器發送一個請求。服務器接收并處理傳來的表單,然後返回一個新的網頁。這個做法浪費了許多帶寬,因為在前後兩個頁面中的大部分HTML代碼往往是相同的。由于每次應用的交互都需要向服務器發送請求,應用的響應時間就依賴于服務器的響應時間。這導致了用戶界面的響應比本地應用慢得多。
與此不同,AJAX應用可以僅向服務器發送并取回必需的數據,它使用SOAP或其它一些基于XML的web service接口,并在客戶端采用JavaScript處理來自服務器的響應。因為在服務器和瀏覽器之間交換的數據大量減少,結果我們就能看到響應更快的應用。同時很多的處理工作可以在發出請求的客戶端機器上完成,所以Web服務器的處理時間也減少了。
Ajax應用程序的優勢在于:
1. 通過異步模式,提升了用戶體驗
2. 優化了瀏覽器和服務器之間的傳輸,減少不必要的數據往返,減少了帶寬占用
3. Ajax引擎在客戶端運行,承擔了一部分本來由服務器承擔的工作,從而減少了大用戶量下的服務器負載。

Ajax的工作原理
  Ajax的核心是JavaScript對象XmlHttpRequest。該對象在Internet Explorer 5中首次引入,它是一種支持異步請求的技術。簡而言之,XmlHttpRequest使您可以使用JavaScript向服務器提出請求并處理響應,而不阻塞用戶。
  在創建Web站點時,在客戶端執行屏幕更新為用戶提供了很大的靈活性。下面是使用Ajax可以完成的功能:
??? 動態更新購物車的物品總數,無需用戶單擊Update并等待服務器重新發送整個頁面。
??? 提升站點的性能,這是通過減少從服務器下載的數據量而實現的。例如,在某購物車頁面,當更新籃子中的一項物品的數量時,會重新載入整個頁面,這必須下載整個頁面的數據。如果使用Ajax計算新的總量,服務器只會返回新的總量值,因此所需的帶寬僅為原來的百分之一。 消除了每次用戶輸入時的頁面刷新。例如,在Ajax中,如果用戶在分頁列表上單擊Next,則服務器數據只刷新列表而不是整個頁面。 直接編輯表格數據,而不是要求用戶導航到新的頁面來編輯數據。對于Ajax,當用戶單擊Edit時,可以將靜態表格刷新為內容可編輯的表格。用戶單擊Done之后,就可以發出一個Ajax請求來更新服務器,并刷新表格,使其包含靜態、只讀的數據。
  一切皆有可能!但愿它能夠激發您開始開發自己的基于Ajax的站點。然而,在開始之前,讓我們介紹一個現有的Web站點,它遵循傳統的提交/等待/重新顯示的范例,我們還將討論Ajax如何提升用戶體驗。
   Ajax的工作原理相當于在用戶和服務器之間加了—個中間層,使用戶操作與服務器響應異步化。這樣把以前的一些服務器負擔的工作轉嫁到客戶端,利于客戶端閑置的處理能力來處理,減輕服務器和帶寬的負擔,從而達到節約ISP的空間及帶寬租用成本的目的。
我們以兩個驗證通行證帳號是否存在的例子來講述AJAX在實際中的應用:
(1)用文本字符串的方式返回服務器的響應來驗證網易通行證帳號是否存在;
(2)以XMLDocument對象方式返回響應來驗證金山通行證帳號是否存在;
首先,我們需要用JavaScript來創建XMLHttpRequest 類向服務器發送一個HTTP請求, XMLHttpRequest 類首先由Internet Explorer以ActiveX對象引入,被稱為XMLHTTP。 后來Mozilla﹑Netscape﹑Safari 和其他瀏覽器也提供了XMLHttpRequest類,不過它們創建XMLHttpRequest類的方法不同。
對于Internet Explorer瀏覽器,創建XMLHttpRequest 方法如下:
xmlhttp_request = new ActiveXObject("Msxml2.XMLHTTP.3.0"); //3.0或4.0, 5.0 xmlhttp_request = new ActiveXObject("Msxml2.XMLHTTP"); xmlhttp_request = new ActiveXObject("Microsoft.XMLHTTP");
由于在不同Internet Explorer瀏覽器中XMLHTTP版本可能不一致,為了更好的兼容不同版本的Internet Explorer瀏覽器,因此我們需要根據不同版本的Internet Explorer瀏覽器來創建XMLHttpRequest類,上面代碼就是根據不同的Internet Explorer瀏覽器創建XMLHttpRequest類的方法。
對于Mozilla﹑Netscape﹑Safari等瀏覽器,創建XMLHttpRequest 方法如下:xmlhttp_request = new XMLHttpRequest();
如果服務器的響應沒有XML mime-type header,某些Mozilla瀏覽器可能無法正常工作。 為了解決這個問題,如果服務器響應的header不是text/xml,可以調用其它方法修改該header。
xmlhttp_request = new XMLHttpRequest(); xmlhttp_request.overrideMimeType('text/xml');
在實際應用中,為了兼容多種不同版本的瀏覽器,一般將創建XMLHttpRequest類的方法寫成如下形式:
try{ if( window.ActiveXObject ){ for( var i = 5; i; i-- ){ try{ if( i == 2 ){ xmlhttp_request = new ActiveXObject( "Microsoft.XMLHTTP" ); } else{ xmlhttp_request = new ActiveXObject( "Msxml2.XMLHTTP." + i + ".0" ); xmlhttp_request.setRequestHeader("Content-Type","text/xml"); xmlhttp_request.setRequestHeader("Content-Type","gb2312"); } break;} catch(e){ xmlhttp_request = false; } } } else if( window.XMLHttpRequest ) { xmlhttp_request = new XMLHttpRequest(); if (xmlhttp_request.overrideMimeType) { xmlhttp_request.overrideMimeType('text/xml'); } } } catch(e){ xmlhttp_request = false; }
在定義了如何處理響應后,就要發送請求了。可以調用HTTP請求類的open()和send()方法,如下所示:
xmlhttp_request.open('GET', URL, true); xmlhttp_request.send(null);
open()的第一個參數是HTTP請求方式—GET,POST或任何服務器所支持的您想調用的方式。 按照HTTP規范,該參數要大寫;否則,某些瀏覽器(如Firefox)可能無法處理請求。
第二個參數是請求頁面的URL。
第三個參數設置請求是否為異步模式。如果是TRUE,JavaScript函數將繼續執行,而不等待服務器響應。這就是"AJAX"中的"A"。
用JavaScript來創建XMLHttpRequest 類向服務器發送一個HTTP請求后,接下來要決定當收到服務器的響應后,需要做什么。這需要告訴HTTP請求對象用哪一個JavaScript函數處理這個響應。可以將對象的onreadystatechange屬性設置為要使用的JavaScript的函數名,如下所示:
xmlhttp_request.onreadystatechange =FunctionName;
FunctionName是用JavaScript創建的函數名,注意不要寫成FunctionName(),當然我們也可以直接將JavaScript代碼創建在onreadystatechange之后,例如:
xmlhttp_request.onreadystatechange = function(){ // JavaScript代碼段 };
首先要檢查請求的狀態。只有當一個完整的服務器響應已經收到了,函數才可以處理該響應。XMLHttpRequest 提供了readyState屬性來對服務器響應進行判斷。
readyState的取值如下:
0 (未初始化)
1 (正在裝載)
2 (裝載完畢)
3 (交互中)
4 (完成)
所以只有當readyState=4時,一個完整的服務器響應已經收到了,函數才可以處理該響應。具體代碼如下:
if (http_request.readyState == 4) { // 收到完整的服務器響應 } else { // 沒有收到完整的服務器響應 }
當readyState=4時,一個完整的服務器響應已經收到了,接著,函數會檢查HTTP服務器響應的狀態值。完整的狀態取值可參見W3C文檔。當HTTP服務器響應的值為200時,表示狀態正常。
在檢查完請求的狀態值和響應的HTTP狀態值后,就可以處理從服務器得到的數據了。有兩種方式可以得到這些數據:
(1) 以文本字符串的方式返回服務器的響應
(2) 以XMLDocument對象方式返回響應
實例一: 用文本字符串的方式返回服務器的響應來驗證網易通行證帳號是否存在
首先,我們登陸網易通行證注冊頁面,可以看到檢測用戶名是否存在是將用戶名提交給checkssn.jsp頁面進行判斷,格式為:
reg.163.com/register/checkssn.jsp?username=用戶名
根據上面講到的方法,我們可以利用AJAX技術對網易通行證用戶名進行檢測:
第一步:新建一個基于Xhtml標準的網頁,在區域插入Javascript函數如下:

function getXMLRequester( )
{

var xmlhttp_request = false;
try
  {

    if( window.ActiveXObject )
    {

       for( var i = 5; i; i-- )

        {
          try

          {
            if( i == 2 )
             { xmlhttp_request = new ActiveXObject( "Microsoft.XMLHTTP" ); }
            else
            {

               xmlhttp_request = new ActiveXObject( "Msxml2.XMLHTTP." + i + ".0" );
               xmlhttp_request.setRequestHeader("Content-Type","text/xml");
               xmlhttp_request.setRequestHeader("Content-Type","gb2312");

             }
            break;

          }
          catch(e)

          { xmlhttp_request = false; }

        }

     }
    else if( window.XMLHttpRequest )
    {

       xmlhttp_request = new XMLHttpRequest();
      if (xmlhttp_request.overrideMimeType)
      { xmlhttp_request.overrideMimeType('text/xml'); }

     }

  }
  catch(e)

  {

    xmlhttp_request = false;

   }
  return xmlhttp_request ;

}
function IDRequest(n)

{

//定義收到服務器的響應后需要執行的JavaScript函數
url=n+document.getElementById('163id').value;//定義網址參數
xmlhttp_request=getXMLRequester();//調用創建XMLHttpRequest的函數
xmlhttp_request.onreadystatechange = doContents;//調用doContents函數
xmlhttp_request.open('GET', url, true);
xmlhttp_request.send(null);

}
function doContents()
{

  if (xmlhttp_request.readyState == 4)

  {// 收到完整的服務器響應
    if (xmlhttp_request.status == 200)

    {//HTTP服務器響應的值OK
      document.getElementById('message').innerHTML = xmlhttp_request.responseText;
      //將服務器返回的字符串寫到頁面中ID為message的區域

    }
    else

     {

      alert(http_request.status);

     }

  }

}



在區域建立一個文本框,id為163id,再建一個id為messsge的空白區域用來顯示返回字符串(也可以通過Javascript函數截取一部分字符串顯示):
<input type=text id="163id"> < span id="message"></span>
這樣,一個基于AJAX技術的用戶名檢測頁面就做好了,不過這個頁面將返回服務器響應生成頁面的所有字符串,當然還可以對返回的字符串進行一些操作,便于應用到不同的需要當中。
實例二: 以XMLDocument對象方式返回響應來驗證金山通行證帳號是否存在
在上面的例子中,當服務器對HTTP請求的響應被收到后,我們會調用請求對象的reponseText屬性。該屬性包含了服務器返回響應文件的內容。現在我們以XMLDocument對象方式返回響應,此時將不再需要reponseText屬性而使用responseXML屬性。
首先登陸金山通行證注冊頁面,我們發現金山通行證用戶名的檢測方式為: pass.kingsoft.com/ksgweb/jsp/login/uid.jsp?uid=用戶名,并且返回XML數據:
isExistedUid -2
當result值為-1時表示此用戶名已被注冊,當result值為-2時表示此用戶名尚未注冊,因此通過對result值的判斷可以知道用戶名是否被注冊。
對上例代碼進行修改:
首先找到
document.getElementById('message').innerHTML = xmlhttp_request.responseText;
改為:
var response = xmlhttp_request.responseXML.documentElement;
var result = response.getElementsByTagName('result')[0].firstChild.data;//返回result節點數據
if(result ==-2){
document.getElementById('message').innerHTML = "用戶名"+document.getElementById('163id').value+"尚未注冊";}
else if(result ==-1){
document.getElementById('message').innerHTML = "對不起,用戶名"+document.getElementById('163id').value+"已經注冊";}
通過以上兩個實例說明了AJAX的客戶端基礎應用,采用的是網易和金山現成的服務器端程序,當然為了開發合適自己頁面的程序,還需要對自己編寫服務器端程序,這設計到程序語言及數據庫的操作,對于有一定程序基礎的讀者一定不是很難的事情(http://bbs.jcwcn.com/thread-150376-1-1.html)

轉載于:https://www.cnblogs.com/Garden-blog/archive/2011/12/06/2277686.html

總結

以上是生活随笔為你收集整理的什么是ajax【解释和实例】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 免费av看 | 亚洲日本护士毛茸茸 | 91网国产 | 欧美三级一区二区三区 | 少妇太紧太爽又黄又硬又爽 | 欧美乱妇狂野欧美在线视频 | 国产精品呦呦 | 午夜秋霞 | 少妇日韩 | 老司机午夜免费福利 | 久久av一区二区三区亚洲 | 欧美无砖专区免费 | jizz国产在线 | 就爱av | 97超碰中文字幕 | 一区二区日韩电影 | 色成人综合网 | 亚洲女同志亚洲女同女播放 | 都市激情一区 | 欧美精品一区二区蜜臀亚洲 | 大度亲吻原声视频在线观看 | 日韩人妻精品在线 | 精品国产www | 国内一级视频 | 久久久久久久久久网站 | 在线观看wwww | 日韩高清影院 | 欧美极品jizzhd欧美 | 最新av网站在线观看 | 泰坦尼克号3小时49分的观看方法 | 欧美精品123区 | 黄色高清视频 | 女女同性高清片免费看 | 青娱乐91 | 亚洲综合一 | 黄色片视频免费在线观看 | 火影忍者羞羞漫画 | 欧美69久成人做爰视频 | 黄色亚洲视频 | 欧美在线亚洲 | 93久久精品日日躁夜夜躁欧美 | 最好看的日本字幕mv视频大全 | 亚洲国产中文在线 | 欧美色图久久 | 78日本xxxxxxxxx59| 在线看成人av| 国产波霸爆乳一区二区 | 影音先锋波多野结衣 | 伊人成人22| 最新国产露脸在线观看 | 在线观看免费高清在线观看 | 亚洲aⅴ网站 | 在线观看国产欧美 | 狠狠干天天操 | 99热综合 | 精品一区二区三区免费看 | 无码人妻精品一区二区三区99日韩 | 亚洲女人毛片 | 色撸撸在线| 色网站免费看 | 日本xxxx18| 亚洲精品国产美女 | 超碰资源 | 色欲av无码精品一区 | 国产精品日韩在线观看 | www在线视频 | 日韩亚洲视频 | 在线国产中文字幕 | 久久精品日韩无码 | 色哟哟在线观看视频 | 成人28深夜影院 | 亚洲图片 自拍偷拍 | 尤物精品| 亚洲第一网站 | 精品视频在线观看 | 亚洲精品在线91 | 最近中文字幕一区二区 | 在线看网站 | 无码人妻精品一区二区三 | 色多多视频在线观看 | 国产精品com | 天堂网免费视频 | 国产 xxxx| 五月天婷婷久久 | 777视频在线观看 | 日本高清不卡码 | 日韩一级黄色大片 | 日本人dh亚洲人ⅹxx | 丰满少妇乱子伦精品看片 | 国产精品777777 | 日韩精品av一区二区三区 | 特级精品毛片免费观看 | free性丰满69性欧美 | av首页在线| 九九九精品视频 | 国产盗摄视频在线观看 | 性感av在线 | 国产97自拍| 你懂的日韩 |