首頁 > web前端 > js教程 > AJAX:與遠程腳本的可用互動性

AJAX:與遠程腳本的可用互動性

Lisa Kudrow
發布: 2025-03-10 00:30:09
原創
699 人瀏覽過

AJAX:與遠程腳本的可用互動性

如果您的書籤甚至包含一個網絡開發博客,您無疑會知道,遠程腳本被吹捧為新的“網絡未來”。

儘管我感到一些人可能對此有些過分興奮,但最近發布了眾多使用遠程腳本的眾多備受矚目的Web應用程序,表明在創建無縫網絡應用程序中使用這些技術有一定的優勢,以及增強網頁功能。

>本文旨在為您介紹遠程腳本的基礎,尤其是新興的XMLHTTTPREQUEST協議。然後,我們將瀏覽一個示例應用程序,該應用程序演示瞭如何在創建可用界面時實現該協議。

開始,下載代碼存檔,其中包含您需要創建工作示例所需的所有文件。 >

鑰匙要點

通過允許與服務器進行數據交換而無需刷新網頁,

AJAX和遠程腳本增強了Web應用程序,從而使更順暢,更互動的用戶體驗。
    > XMLHTTPRequest是AJAX中的一個關鍵組件,可以異步從服務器中獲取數據,從而防止在數據檢索過程中凍結網頁。 在實施AJAX以確保所有用戶(包括殘疾人或較舊的瀏覽器技術)可以有效地訪問內容時,
  • 適當的錯誤處理和可訪問性注意事項至關重要。
  • >
  • > XMLHTTPREQUEST對象的創建隨瀏覽器而變化,因此需要兼容的後備機制,尤其是對於較舊的Internet Explorer版本,需要ActiveX才能使用Ajjax功能。
  • ajax應用程序必須安全處理數據,以防止常見的Web漏洞,例如跨站點腳本(XSS)和跨站點請求偽造(CSRF),強調安全編碼實踐的重要性。 由於其異步性質,調試Ajax可能很複雜,但是瀏覽器中的現代開發工具可以有效地監視和對Ajax請求和響應進行故障。
  • 什麼是遠程腳本?
  • 本質上,遠程腳本允許客戶端JavaScript從服務器請求數據,而無需刷新網頁。就是這樣。製作無縫Web應用程序的其他所有內容都藉鑑了操縱文檔對像模型的已建立方法。根據Google建議,這可能與創建一個要選擇的單詞列表一樣簡單。或者它可能涉及創建一個用於導航和縮放映射圖像的整個接口,例如Map.search.ch。

    >但是,除了創建新的Web體驗的能力外,遠程腳本還使我們能夠創造新的無法使用的網絡體驗。遠程腳本和無縫應用程序帶來了桌面應用程序設計領域的許多問題,使網絡上的相同問題成為可能。您有責任確保您的遠程腳本接口解決這些問題,並為您的用戶提供最佳的體驗。

    遠程腳本和可訪問性
    >
    與任何在線應用程序或網頁一樣,我們必須始終考慮用戶的需求。一些用戶可能具有缺乏JavaScript功能的瀏覽器,或者,即使可以執行JavaScript,他們也可能沒有遠程腳本功能。

    >這是一種公認​​的最佳實踐,JavaScript交互和遠程腳本功能增加了基於Web的內容的基本功能:如果沒有這些技術,則必須訪問和可用。在完全露面的Web應用程序的情況下,為沒有JavaScript或遠程腳本功能的用戶提供完全不同的系統可能是可以接受的。 Gmail的團隊最近實施了服務的非在置,替代接口。

    >使用xmlhttprequest

    遠程腳本

    儘管XMLHTTPREQUEST是
    不是公共標準,但大多數現代瀏覽器都始終如一地實現它,並且它正在成為JavaScript數據檢索的事實上的標準。 Windows的Internet Explorer 5,Mozilla 1.0,Safari 1.2和Opera的即將到來的8.0版,都將XMLHTTPRequest介紹為可用對象。

    Internet Explorer XMLHTTPRequest API可供下載。 您也可以下載Mozilla文檔。

    如果您需要對比這些年齡較大的瀏覽器的支持,則使用IFRAME的方法提供可行的解決方案;但是,為這些瀏覽器編碼還將限制您使用標準JavaScript DOM方法的能力。本文將重點介紹更現代的XMLHTTPREQUEST方法。

    >

    創建xmlhttprequest對象

    除了Internet Explorer之外,對於任何瀏覽器,我們都可以創建一個這樣的XMLHTTPREQUEST對象:

    但是,在Internet Explorer中,XMLHTTPREQUEST被實現為ActiveX對象。對於IE,創建一個對象:

    >
    >

    注意:這也意味著,如果用戶在Internet Explorer中禁用ActiveX對象,即使啟用了JavaScript,它們也將無法使用XMLHTTPRequest。 為了應對這些瀏覽器使用的對象創建語法的差異,最好使用try/catch結構自動為您提供正確的對象,或者如果沒有XMLHTTTPRequest對象,則返回錯誤

    var requester = new XMLHttpRequest();
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    值得慶幸的是,實施之間的差異結束了,並且可以執行所有隨後的方法調用xmlhttprequest對象,而不管瀏覽腳本運行的哪個browser。

    使用xmlhttprequest對像傳輸數據

    >一旦創建了XMLHTTPRequest對象,我們必須調用兩個單獨的方法才能使其從服務器檢索數據。 >

    > URL可以是相對的或絕對的,但是由於跨域安全問題,目標必須與請求該的頁面相同的域名。
    var requester = new ActiveXObject("Microsoft.XMLHTTP");
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    >
    try 
    {
     var requester = new XMLHttpRequest();
    }
    catch (error)
    {
     try
     {
       var requester = new ActiveXObject("Microsoft.XMLHTTP");
     }
     catch (error)
     {
       return false;
     }
    }
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    open()方法還採用一個可選的第三個布爾參數,該參數指定請求是異步(true,默認值)還是同步(false)。借助同步請求,瀏覽器將凍結,不允許任何用戶交互,直到對象完成為止。在後台發生異步請求,允許其他腳本運行並讓用戶繼續訪問其瀏覽器。建議您使用異步請求;否則,我們會在等待出現問題的請求時會冒著用戶瀏覽器鎖定的風險。 Open()可選的第四和第五參數是訪問密碼保護URL時的用戶名和密碼。

    >

    >一旦開放()已用於初始化連接,send()方法會激活連接並提出請求。 send()採用一個參數,允許我們與呼叫一起發送額外的數據,例如CGI變量。 Internet Explorer將其視為可選的,但是Mozilla將返回錯誤,如果沒有值任何值,因此使用以下方式調用它是最安全的:

    >要使用GET Request方法發送CGI變量,我們必須將變量編碼為open()url:>

    open() initialises the connection we wish to make, and takes two arguments, with several optionals. The first argument is the type of request we want to send; the second argument identifies the location from which we wish to request data. For instance, if we wanted to use a GET request to access feed.xml at the root of our server, we'd initialise the XMLHttpRequest object like this:
    
    
    登入後複製
    登入後複製
    登入後複製
    >要使用POST請求方法發送CGI變量,CGI變量可以傳遞到Send()方法,例如:

    requester.open("GET", "/feed.xml");
    登入後複製
    登入後複製
    登入後複製
    >我們致電send(),xmlhttprequest將聯繫服務器並檢索我們要求的數據;但是,此過程需要不確定的時間。為了找出對象何時完成數據的數據,我們必須使用事件偵聽器。在XMLHTTPRequest對象的情況下,我們需要聆聽其ReadyState變量的更改。該變量指定對象連接的狀態,並且可以是以下任何一個:>

    requester.send(null);
    登入後複製

    0 - 非初始化

    1個 - 加載

      2 - 加載
    • 3 - 交互式
    • 4 - 完成
    • 可以使用特殊的OnreadyStateChange偵聽器來監視ReadyState變量的更改,因此我們需要設置一個函數以在更改ReadyState時處理事件:
    var requester = new XMLHttpRequest();
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    var requester = new ActiveXObject("Microsoft.XMLHTTP");
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    try 
    {
     var requester = new XMLHttpRequest();
    }
    catch (error)
    {
     try
     {
       var requester = new ActiveXObject("Microsoft.XMLHTTP");
     }
     catch (error)
     {
       return false;
     }
    }
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    即使XMLHTTPREQUEST對象允許我們多次調用open()方法,但每個對象實際上只能用於一個呼叫,因為一旦準備就緒,就不會再次更新到“ 4”(在Mozilla)。因此,我們必須每次要進行遠程調用時創建一個新的XMLHTTPRequest對象。

    > 在xmlhttprequest對象

    中解析數據
    如果我們提出了成功的請求,則xmlhttprequest對象的兩個屬性可能包含數據:>

    responsexml存儲一個由對象檢索的任何XML數據的圓頂結構化對象。使用標準JavaScript DOM訪問方法和屬性,例如getElementsBytagName(),childnodes []和parentnode。

      >根據數據的複雜性,將數據簡單地作為純文本字符串返回可能會更容易,從而使XML在XMLHTTPRequest中冗餘。但是,對於更複雜的數據類型,您可能需要使用XML格式,例如:
    • >
    •        約翰·史密斯
            John@smith.com

    >
    >
    我們能夠使用標準DOM訪問方法訪問數據的不同部分。請記住,標籤之間包含的數據被認為表示父母的子文本節點,因此,當我們檢索數據時,我們必須考慮到額外的結構層:


    我們還必須謹慎對待空格:XML文件中的縮進值可能會在該值中產生不必要的whitespace,或添加其他文本節點。
    >一旦我們從xmlhttprequest對像中解析了數據後,我們可以隨意更改,刪除並將其寫入我們的網頁上,因為我們看到了合適的!

    一個示例遠程腳本應用程序

    為了演示如何在遠程腳本應用程序中使用xmlhttprequest協議,我創建了一個簡單的一頁示例。它假設可以使用JavaScript和XMLHTTPRequest,以使代碼更可讀,但是在任何現實世界中,您應該始終檢查XMLHTTPRequest是否可用,並具有後備(即正常表單提交),而不是。

    >示例應用程序將允許用戶將免費的ecard發送到朋友的電子郵件地址。為此,用戶首先要輸入收據號碼,他們之前購買了商品時收到的收據,此後已存儲在Exippleco數據庫中。然後,用戶必須在發送eCARD之前完成剩餘字段,並輸入收件人的電子郵件地址,消息和將用於卡的圖形圖像:

    AJAX:與遠程腳本的可用互動性 在此示例中,

    遠程腳本用於以下三個動作,to:

    >

      >最小化收據號碼驗證的等待時間
    • 一旦收據編號已驗證
    • >,將檢索到的數據輸入到表格中
    • >重寫頁面的內容,一旦ecard成功發送了
    • >
    • >與這些操作一起,該示例包含JavaScript,該示例在提交前驗證了其他表單字段,並允許用戶選擇ECARD圖形。

    >該示例是在兩個單獨的版本中創建的。這些版本中的第一個證明了在應用程序內實現XMLHTTPRequest協議,但它包含了幾個不可避免的可用性問題。這些問題在第二個示例中解決了,該示例旨在突出一些從基於頁面的應用程序模型轉向更具動態和交互式環境時可能遇到的一些問題。

    >

    >示例1:實現xmlhttprequest

    在傳統的服務器/客戶端應用程序中,必須將整個ECARD表單提交給服務器,檢查並返回到瀏覽器,然後才能使客戶端知道其收據號碼是否有效。使用遠程腳本模型,我們能夠在用戶完成該字段後立即檢查收據號碼。因此,當用戶提交表單時,瀏覽器已經確定了數據是否有效。
    >遠程檢查數據的第一步是知道何時將值輸入收據編號字段。可以使用該字段的Onchange事件處理程序檢測到這。每當用戶修改文本字段的值,然後“模糊”遠離該字段時,就會註冊文本字段上的“更改”(即它們選項卡或單擊它)。通常,這很好地表明用戶已經完成了該字段,並且可以處理其中包含的數據。通過捕獲此Onchange事件,我們可以告訴我們的腳本開始驗證該字段的內容:>

    >您可以從本文第一部分中識別一些該語法,即分叉的嘗試/捕獲結構,以及OPEN()和SEND()和SEND()控制XMLHTTPRequest對象的方法。

    >。

    >第一個if語句檢查檢查是否已經存在XMLHTTPREQUEST對象並且當前正在運行;如果是這樣,它將中止該連接。這確保了許多相互衝突的XMLHTTPRequest調用不會同時運行,這會阻塞網絡。然後,該功能繼續繼續,創建一個新的XMLHTTPRequest對象,並打開與服務器端驗證腳本的連接,Receipt.php。

    >在Receipt.php中,檢查了CGI變量收據,如果其值為“ 1234567”,則返回一些XML數據;否則,返回了“空”的純文本字符串,表明收據編號無效:>

    在此示例中,已經使用了硬編碼的值和數據來簡化代碼,但是在現實世界中,此PHP腳本將對數據庫檢查收據號碼,並返回該數字的適當數據。

    請注意,如果收據號碼無效,則發送的內容類型標頭是“文本/平原”。這簡化了消息打印過程,但這也意味著,在客戶端,XMLHTTPRequest對象的響應XML屬性將不包含任何內容。因此,您應該始終知道服務器端腳本返回的內容,並關注響應xml或wenderseText。
    var requester = new XMLHttpRequest();
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    >調用服務器端腳本,OnChangeCeipt()還分配了onreadystateChangeCeipt()通過onreadyStateChange事件監視連接的狀態,並且該功能決定何時完成連接並採取進一步的操作。為此,我們使用先前討論的ReadyState/狀態狀況嵌套:

    函數onreadystatatechangereceipt()

    {

     / *如果XMLHR對像已經完成了數據 */

     if(requester.readystate == 4)

    >  {
       / *如果成功檢索數據 */
       if(requester.status == 200)
    >    {
         writedetails();  
       }
       / * IE在某些情況    否則if(requester.status!= 0)
       {
         (“檢索URL時出現錯誤:” requester.statustext);  
       }
     }
     
     返回true;  
    }

    返回成功的狀態代碼時,請調用WritedEtails()。正是此功能解析返回的數據並確定該如何在網頁上做什麼:>

    var requester = new XMLHttpRequest();
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製

    此功能首先檢查XMLHTTPREQUEST對象的ResponseText屬性,以查看收據號碼是否有效。如果有效,則數據將以XML格式進行,其第一個字符將是一個開頭的角度支架(> WitterEtails()的執行標記了遠程腳本過程的結束,以進行收據號碼驗證。在現場設置的擴展有效屬性後,瀏覽器知道數據是否還可以,並且在用戶嘗試提交表單時可以提醒任何錯誤:>

    >如果表單有錯誤,則在單擊提交按鈕時出現一個alert()對話框,要求用戶在提交表單之前糾正錯誤:>
    var requester = new ActiveXObject("Microsoft.XMLHTTP");
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製

    AJAX:與遠程腳本的可用互動性

    try 
    {
     var requester = new XMLHttpRequest();
    }
    catch (error)
    {
     try
     {
       var requester = new ActiveXObject("Microsoft.XMLHTTP");
     }
     catch (error)
     {
       return false;
     }
    }
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    這將刪除給用戶呈現的初始表格,並插入最終狀態消息:
    open() initialises the connection we wish to make, and takes two arguments, with several optionals. The first argument is the type of request we want to send; the second argument identifies the location from which we wish to request data. For instance, if we wanted to use a GET request to access feed.xml at the root of our server, we'd initialise the XMLHttpRequest object like this:
    
    
    登入後複製
    登入後複製
    登入後複製
    requester.open("GET", "/feed.xml");
    登入後複製
    登入後複製
    登入後複製

    當此應用程序重寫幾乎整個頁面時,很容易看到如何使用遠程腳本更改DOM的特定部分,這將使應用程序接口的單獨部分獨立於網頁本身更新。 AJAX:與遠程腳本的可用互動性

    >示例2:創建一個可用的遠程腳本接口

    遠程腳本模型與滲透到大多數網絡的標準互動量完全不同,並且隨之而來的是新的可用性陷阱,很容易將其引入您的項目中。這些陷阱通常是由於用戶訪問該界面的動態操縱而引起的,或者是訪問網頁外部數據的需要。

    >示例1使用遠程腳本來驗證收據號碼,並自動插入從數據庫中檢索到的數據;但是,這些信息都沒有特別好,對用戶的情況也不明顯。示例2旨在在第一個示例中糾正和其他缺陷,並使體驗更快,更容易,更容易理解。下面的五個技巧解釋了可以用來將糟糕體驗變成美好體驗的一些變化。
    提示#1:告訴用戶為什麼他們等待

    >

    遠程腳本不是瞬時的。無論您的網絡連接速度如何,與外部源的通信時間都會有所不同。因此,當與服務器的通信發生時,必須告訴用戶他們為什麼等待。 (示例PHP腳本使用Sleep()調用來突出網絡流量或其他因素可能引起的等待時間。

    因為遠程腳本應用程序不會使用普通瀏覽器接口進行呼叫,所以狀態欄(通常會通知用戶轉移狀態和活動)無法正常運行,因此,我們必須向用戶自己提供反饋。 在示例2中,

    >在驗證收據號碼時,標籤顯示收據編號字段以解釋等待。

    AJAX:與遠程腳本的可用互動性標籤更改以指示完成後完成後完成的。

    >

    AJAX:與遠程腳本的可用互動性在XMLHTTPREQUEST連接之前初始化狀態消息,當觸發收據號碼字段的OnChange事件時

    >遠程腳本操作完成後,消息將更新以告訴用戶收據號碼是否有效:>

    var requester = new XMLHttpRequest();
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    更新消息以表明完成很重要,因為它為用戶提供了關閉。如果加載消息只是消失了,則無法確定它已經成功。

    >在上面的兩個代碼示例中,消息函數是一個自定義函數,該函數動態創建表單元素的狀態標籤,並在視覺上定位與相關元素相鄰。它還接受狀態標籤的類,該類允許使用CSS樣式以不同的方式應用,錯誤和完成消息:

    var requester = new ActiveXObject("Microsoft.XMLHTTP");
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    > XMLHTTPREQUEST進程正在運行時,標籤動畫以表明該動作正在進行中並且仍然活著。在示例2中,這是通過CSS樣式使用動畫GIF執行的,但也可以使用JavaScript動畫進行。

    >

    >將相同的功能應用於表單提交按鈕。同樣,這警告用戶正在採取某些操作,也讓他們知道他們確實單擊了按鈕,這將有助於阻止用戶多次按下按鈕:>

    try 
    {
     var requester = new XMLHttpRequest();
    }
    catch (error)
    {
     try
     {
       var requester = new ActiveXObject("Microsoft.XMLHTTP");
     }
     catch (error)
     {
       return false;
     }
    }
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    為了實現這一目標,只需更改提交按鈕的值和CSS類:>

    提示#2:不要干擾用戶的交互

    用戶對乾擾其任務完成的接口感到沮喪。在示例1中,此類干擾可能會在用戶輸入收據號碼之後發生:如果他們在驗證收據號碼之前開始填寫其姓名和電子郵件地址,則一旦從服務器收到用戶數據後,這些詳細信息將被覆蓋。

    >

    >

    為了糾正這一點,示例2檢查用戶是否已更改腳本輸入任何數據之前的文本字段的值。頁面加載時可以檢測到文本字段的默認值,並使用自定義域錄製:

    >
    var requester = new XMLHttpRequest();
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    然後,在腳本嘗試將任何數據寫入其中之前,可以根據其當前內容檢查字段的默認值:>

    >這可以確保用戶(可能比我們更了解自己的名字的用戶)沒有過度熱心的自動化所覆蓋的條目。
    var requester = new ActiveXObject("Microsoft.XMLHTTP");
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    >

    >其他一些常見的干擾案例,您應該避免在用戶填寫另一個字段時將光標移至字段,並將用戶鎖定在接口中(這就是為什麼XMLHTTPRequest不應使用XMLHTTPREQUEST使用)。

    >

    提示#3:早點捕獲錯誤,但不是太早

    > >最好在發生時立即捕獲錯誤。當前在Web上出現的許多表格都取決於用戶在使用服務器端腳本或Inelegant JavaScript警報顯示任何表單錯誤之前提交表單(如示例1)。這些方法對用戶有幾個缺點:

    提交表單的過程佔用用戶的時間。

    >
      > JavaScript警報不會永久標記所有需要校正的字段。
    • 在犯下錯誤之後很好地指示錯誤要求用戶在心理上回憶起錯誤的字段。
    • 用戶知道要糾正哪種形式的元素,他們也必須重新提交表格以找出是否正確糾正了這些元素。 >
    • 出於這些原因,最好在犯錯後立即告知用戶錯誤。在示例2中,如果用戶輸入無效的電子郵件地址,則該應用程序會立即告訴他們。該通知位於電子郵件字段旁邊,使用TIPE#1:的Message()函數
    • 但是,您不應該在用戶開始鍵入鍵入時,不應該立即檢查有效性,因為它分散注意力(更不用說煩人)要被告知您甚至在輸入數據之前就犯了一個錯誤。只有在用戶完成輸入時,即將完成該條目後,才應進行現場檢查。對於文本字段,最好使用onChange事件捕獲這種類型的操作:
    • >
      var requester = new XMLHttpRequest();
      登入後複製
      登入後複製
      登入後複製
      登入後複製
      登入後複製
      登入後複製
      登入後複製
      登入後複製

      事件觸發的函數可以檢查字段,並確保其包含的數據對該數據類型有效:

      >
      var requester = new ActiveXObject("Microsoft.XMLHTTP");
      登入後複製
      登入後複製
      登入後複製
      登入後複製
      登入後複製
      登入後複製

      提示#4:讓用戶知道何時修復了錯誤

      >

      >一旦發現字段是不正確的,並且已經警告了該錯誤,同樣重要的是要讓用戶知道他或她將其更改為正確的情況,否則用戶將再次被困在表單提交週期中。 在這種情況下,等待瀏覽器的Onchange事件要觸發的不足,因為通常只有在用戶轉化表單元素時才會發生這種情況。因此,最好使用onkeyup事件檢查已知不正確的字段的正確性:

      >

      try 
      {
       var requester = new XMLHttpRequest();
      }
      catch (error)
      {
       try
       {
         var requester = new ActiveXObject("Microsoft.XMLHTTP");
       }
       catch (error)
       {
         return false;
       }
      }
      登入後複製
      登入後複製
      登入後複製
      登入後複製
      登入後複製

      這些方案無法捕獲跳過強制性字段的情況,因此,最好允許用戶提交不完整的表格,因為這允許該程序準確地強調需要完成的內容,而不是搜索尚未填寫的詳細信息。

      open() initialises the connection we wish to make, and takes two arguments, with several optionals. The first argument is the type of request we want to send; the second argument identifies the location from which we wish to request data. For instance, if we wanted to use a GET request to access feed.xml at the root of our server, we'd initialise the XMLHttpRequest object like this:
      
      
      登入後複製
      登入後複製
      登入後複製
      提示#5:提供接口反饋

      >

      創建無縫的Web應用程序可以讓您探索在瀏覽器中尚未看到的新功能,但是這樣做,我們仍然必須記住可用界面設計的基礎。這樣的基礎之一就是提供接口反饋:讓用戶知道他們可以做什麼以及他們做了什麼。 > 在示例1中,尚不完全清楚用戶可以單擊Ecard圖形的縮略圖。如果我們對光標在任何給定時間放置的圖像給出灰色輪廓,則很容易抵消。

      >

      :懸停的偽班都會對使用CSS的任何人都熟悉。當光標被移動到該對像上時,它允許對象更改其外觀。儘管從理論上講可以單獨通過CSS來實現MouseOver效果,但是當前版本的Internet Explorer不允許:懸停對錨標籤除外的任何元素的效果。因此,為了實現對圖像元素的懸停效果,示例2附加了onmouseover和onmouseout事件處理程序:

      AJAX:與遠程腳本的可用互動性 然後,這些事件處理程序可以更改每個圖像的類,並允許我們使用CSS提供視覺反饋:

      更改光標以表明其“可命令性”也可以幫助向用戶提供反饋。這可以使用CSS中的簡單規則來完成:
      requester.open("GET", "/feed.xml");
      登入後複製
      登入後複製
      登入後複製
      var requester = new XMLHttpRequest();
      登入後複製
      登入後複製
      登入後複製
      登入後複製
      登入後複製
      登入後複製
      登入後複製
      登入後複製
      結論
      在將所有這些更改進行示例1之後,示例2變成了一個更有幫助和可用的應用程序。 >

      AJAX:與遠程腳本的可用互動性>這裡提供的技巧中的共同主題始終是使用戶感到舒適和控制。如果用戶不具備所需的信息來了解發生了什麼,他們將以逮捕的方式查看您的應用程序,其性能會受到影響。

      >

      >儘管本文主要關注遠程腳本及其可用性問題的過程,但在創建無縫的Web應用程序時,也應考慮到可訪問性點。示例3是ECARD應用程序的更複雜的版本,它使用更強大的腳本和降級為沒有JavaScript或沒有XMLHTTPRequest的用戶訪問。掌握了上述技術後,您可能想看看這個最後的示例,並開始使您的應用程序確實很健壯。

      >

      經常詢問有關遠程腳本和Ajax

      的問題

      > ajax和遠程腳本之間的主要區別是什麼?

      ajax(異步JavaScript和XML)和遠程腳本都是用於創建交互式Web應用程序的技術。主要區別在於它們如何處理數據。 Ajax使用XML發送和接收數據,而遠程腳本可以使用任何數據格式,包括XML,JSON或純文本。 AJAX是遠程腳本的特定實現,這是一個更廣泛的概念。

      如何改善用戶體驗?

      遠程腳本通過允許網頁在後台與服務器進行通信,而無需完整頁面重新加載,從而可以增強用戶體驗。這會導致更快,更順暢,響應迅速的Web應用程序,改善整體用戶體驗。

      可以與JavaScript以外的其他語言一起使用遠程腳本?

      是的,而JavaScript則可以使用JavaScript,而JavaScript是由於其通用瀏覽器支持的最常用語言,例如,其他語言也可以使用。其他語言也可以使用。但是,語言的選擇取決於用戶瀏覽器的客戶端功能。

      使用遠程腳本的安全含義是什麼?因此,至關重要的是要採取適當的安全措施,例如輸入驗證和輸出編碼,以防止這些威脅。

      >遠程腳本如何使用HTTP請求來處理數據傳輸?它將請求發送到服務器,該請求處理請求並寄迴響應。然後,客戶端腳本處理此響應,以更新網頁而沒有完整頁面重新加載。

      使用AJAX比傳統的遠程腳本相比,使用AJAX有哪些好處?

      ajax ajax提供了比傳統的遠程腳本相比的幾個好處。它允許異步數據交換,這意味著用戶可以在服務器處理請求時繼續與頁面進行交互。 AJAX還支持XML數據格式,該格式比純文本更結構化,更易於處理。

      可以將遠程腳本用於移動應用程序嗎?

      是的,可以將遠程腳本用於移動應用程序。但是,由於移動設備的處理能力和網絡帶寬有限,重要的是要優化腳本以提高性能和效率。

      >

      有哪些用於遠程腳本的常見用例?

      >

      遠程腳本訪問在Web應用程序中經常使用的是需要實時數據更新的Web應用程序,例如實時聊天系統,在線聊天系統,在線遊戲,在線遊戲,在線遊戲和互動互動效果和互動型MAPS和互動MAPS。它也用於需要加載大量數據而無需刷新頁面的應用程序,例如無限滾動。

      >

      >如何調試遠程腳本代碼?

      >

      由於其異步性質而調試遠程拼寫代碼可能會具有挑戰性。但是,現代網絡瀏覽器提供可以提供幫助的開發人員工具。這些工具允許您檢查網絡請求,查看控制台日誌並逐步瀏覽代碼以識別和修復問題。

      >

      >實現遠程腳本的一些最佳實踐是什麼?

      >

      >優雅地處理錯誤;優化腳本以進行性能;實施適當的安全措施;並在各種瀏覽器中測試腳本以確保兼容性。 >

以上是AJAX:與遠程腳本的可用互動性的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板