首页 > web前端 > js教程 > AJAX:与远程脚本的可用互动性

AJAX:与远程脚本的可用互动性

Lisa Kudrow
发布: 2025-03-10 00:30:09
原创
698 人浏览过

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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板