prototype的Ajax介绍

Prototype.js的Ajax对象 - 强大的异步请求处理工具 无论是发送简单的GET请求还是复杂的POST请求,Prototype.js的Ajax对象都能满足需求,并提供了许多高级功能来增强开发体验。Prototype.js是一个流行的JavaScript库,提供了许多实用的功能,包括一个强大的Ajax对象,用于简化和优化异步请求的处理。在上面的示例中,我们创建了一个新的Ajax.Request对象,并指定了请求的URL和请求方法(在这种情况下是GET)。在上面的示例中,我们将请求方法设置为POST,并通过parameters选项指定了要发送的数据。 阅读详情

转自:http://hi.baidu.com/ayasnoopy/

prototype的Ajax介绍[翻译完成]

原文:http://www.prototypejs.org/learn/introduction-to-ajax]
翻译:www.ruby-china.cn 站长]

Prototype框架提供了非常容易和有意思的方法处理Ajax的调用,同时它也是浏览器安全的 。除了简单的请求外,这个模块(指prototype里的Ajax)也能很聪明的处理从服务器返回 的javascript代码,并且提供了一个辅助的类不停的轮循。

Ajax的功能包含在了全局的Ajax对象里面。用于Ajax请求的transport是xmlHttpRequest, 它是从用户角度的对不同浏览器进行安全的抽象的结果。真正的请求是通过创建Ajax. Request对象的实例实现的。复制内容到剪贴板代码: new Ajax.Request('/some_url', { method:'get' });第一个参数是请求的地址,第二个是 可选的哈希值。方法选项指定要使用的HTTP请求方法,默认是POST。

记住,由于安全的原因(也就是防止跨站脚本攻击)Ajax请求只能被用在与包含这个Ajax请 求页面相同的协议、主机与端口上。有些浏览器会允许任意的URL,但是你能不依靠这个。

Ajax响应回调

Ajax请求默认是异步的,这也就意味着你必须要有回调函数能够处理返回的数据。回调方法 在发起请求的时候传给可选的哈希。复制内容到剪贴板代码:

new Ajax.Request('/some_url',
  {
    method:'get',
    onSuccess: function(transport){
      var response = transport.responseText || "no response text";
      alert("Success! \n\n" + response);
    },
    onFailure: function(){ alert('Something went wrong...') }
  });
这里两个回调函数传给了这个哈希值,分别表示成功与失败的警告。onSuccess和 onFailure根据返回的状态相应的被调用。第一个参数是原生的xmlHttpRequest对象,可以 分别使用它的responseText和responseXML属性。

你可以把两个回调都定义,也可以是一个或者没有,这全由你来定。其它的可以用的回调函 数还有:
onUninitialized,
onLoading,
onLoaded,
onInteractive,
onComplete and
onException.


他们都与xmlHttpRequest的传输的某一个状态有关系,除了在分发其它回调时出现异常后引 起的onException外。

还有可以得到的就是onXXX的回调。这里XXX是HTTP的返回状态,象200或者404。需要注意的 是,如果用这种方法,你的onSuccess和onFailure就不会被调用了。因为onXXX有更高的优 先级,因为这样做的话,表示你知道你在做什么。

而onUninitialized、onLoading、 onLoaded和onInteractive这些回调函数并没有完全的被 所有的浏览器实现出来。通过我们避免使用它们。

参数与HTTP方法

你可以将请求参数象一个参数属性一样传递。复制内容到剪贴板代码:
new Ajax.Request('/some_url', {
  method: 'get',
  parameters: {company: 'example', limit: 12}
  });那么参数会以company=example&limit=12的形式发出。

你可以使用GET/POST中的任一种。但是需要注意的是GET的请求不应该导到致数据发生变化
。浏览器很少会缓存POST请求,但是它往往会缓存GET请求。

参数属性的一个重要的应用是用Ajax请求发送一个FORM的内容,Prototype已经给了你一个
帮助的方法,叫做Form.serialize:复制内容到剪贴板代码:
new Ajax.Request('/some_url', {
  parameters: $('id_of_form_element').serialize(true)
  });如果你需要发送自定义的HTTP请求头,你可以用requestHeaders项来实现。只要作为
一个哈希或者用一个扁平的数组传入名字—值对就可以了。如:['X-Custom-1', 'value',
 'X-Custom-2', 'other value'].

如果由于某种原因,你必须POST一个自定义的POST体(没有参数来自于参数项)的请求,有
一个postBody项就是为了这个目的设的。要注意的时,如果你使用postBody,那么你传进来
的所有的参数都不会被发送,因为postBody有更高的优先级。这样做的时候,你应该是清醒
的。

对javascript返回值求值

有时应用程序发送javascript代码作为响应。如果这个返回的Contenty-Type与Javascript
的MIME的类型是一样的,那么Prototype将会自动eval()返回的代码。你如果没有需要的话
,就不用显式的处理这个响应。

还有可能就是这个响应是一个X-JSON的头,那他的内容就会被解析,保存成立个对象并发送
给这些回调函数,当成第二个参数:复制内容到剪贴板代码:
new Ajax.Request('/some_url', { method:'get',
  onSuccess: function(transport, json){
      alert(json ? Object.inspect(json) : "no JSON object");
    }
  });可以用这个函数来取比较重要的数据,以避免解析XML返回的损耗。JSON比XML要更快
(当然也更轻)。

全局响应者

这里有一个对象在每次Ajax请求时都会被调用:Ajax.Responders。你可以用他来注册回调
函数在任何一个Ajax.Request状态发生时被触发:复制内容到剪贴板代码:
Ajax.Responders.register({
  onCreate: function(){
    alert('a request has been initialized!');
  },
  onComplete: function(){
    alert('a request completed');
  }
});每个与xmlHttpRequest的传输状态匹配的回调都可以放在这里,再带上一个onCreate。
象这样的全局的跟踪请求在不少方面是很有用的:你可以把它们记录下来以用于调试或者抛
出一个异常处理,来通过用户可能的连接问题。

用Ajax.Updater来动态更新你的页面
开发者经常想通过Ajax请求来接收HTML的片段来更新文档的部分内容。通过Ajax.Request的
onComplete回调是相当容易的,但是如果是用Ajax.Update就会变得更加容易。
假设你的HTML文档中有以下代码:复制内容到剪贴板代码:
<h2>Our fantastic products</h2>
<div id="products">(fetching product list ...)</div>'products'容器是空的,你
想把Ajax的响应的HTML返回值放到这里。没有问题:复制内容到剪贴板代码:
new Ajax.Updater('products', '/some_url', { method: 'get' });这就是全部,没有别
的其它工作。变量与Ajax.Request是一样的。除了第一个位置上多了一个接收元素。
Prototype会通过Element.update()来神奇的把响应更新到容器。

如果你的HTML里还有内含的一些脚本,默认情况下会被过滤掉,为了让你的脚本被执行,你
必须在evalScripts选项上传入真值。

那如果有错误发生,服务器返回一个错误信息而不是HTML,那会怎么样?一般来讲,你不会
想插入错误到用户需要内容的地方。幸运的时,prototype提供了一个方法的解决办法:你
现在在第一个参数里传入以这种形式{ success:'products', failure:'errors' }表示两个
不同的容器的哈希值,而不只是原来那一个。那么成功的话,内容就会被放在success的容
器上,错误就会被放在failure容器上。通过使用这些特性,你的界面就会变得更加用户友
好。

你也可能不想覆盖当前容器中的内容,而是想把新的HTML加在最前或者最后面。很好,你完
全可以这样做。只要把要插入的对象当成是插入参数传递给Ajax就可以了:复制内容到剪贴
板代码:
new Ajax.Updater('products', '/some_url', {
  method: 'get',
  insertion: Insertion.Top
  });Ajax.Updater就会使用给定的对象在容器('products')元素里对返回的HTML执行插入
。漂亮的手法!


用Ajax.PeriodicalUpdater自动执行请求

你发现Ajax.Updater很酷,但是你还想定时的执行他从服务器取数据?Prototype框架也有
这个东西。这个东西就是Ajax.PeriodicalUpdater,它基本上就是定时的运行Ajax.
Updater。复制内容到剪贴板代码:
new Ajax.PeriodicalUpdater('products', '/some_url',
  {
    method: 'get',
    insertion: Insertion.Top,
    frequency: 1,
    decay: 2
  });两个新的参数是频率与衰退。频率就是请求产生的间隔,用秒表示。这里它是1秒,表
示Ajax每分钟请求一次。默认的频率是2秒。我们的用户可能会对应用有这么好的响应程序
感到非常高兴,但是我们的服务器可能性会承受非常大的压力,如果用户一直长时间开着浏
览器的话。这也是为什么有decay这个选项的原因。这是一个因子,通过它,频率会在每次
得到相同的返回内容时被加倍。第一次可能是1秒,然后是2秒,然后是4秒,然后是8这样一
直下去。当然,如果这个服务器一直返回不同的数据,decay就不会起作用。这个因子只在
你的内容基本上不变化了,返回的数据也基本相同时才起作用。

将频率调低可以明显减轻服务器的负担,因为无用的请求次数会减少。你可以用这个因子在
监视服务器的负载,或者你可以传进1来完全关掉它(1是默认值)或者省略掉。
继续 学习更多关于Ajax.Request、Ajax.Updater和Ajax各种项目。

prototype-AJAX案例 prototype 框架实现ajax实例 立即下载

相关推荐

宜搭,高级认证实操2,FaaS连接器指导教程

找到FaasEntry.java将如下代码整体替换,注意引包。如图所示在util下新建EDSUtil.java代码如下。回到连接器界面点击右上角测试-->测试。连接器工厂-->新建FaaS连接器。保存-->前往云IDE开发。返回如图所示代码,部署成功。

2301_80286061的博客 3342

prototype的Ajax功能

创建Ajax对象的三个类  Ajax.Request   构造函数:Ajax.Request(Url,options);    url  :服务器地址    options :method(只能为小写的post|get)      :parameters:参数(name = value形式)      :onComplete:回调函数      :asynchronous:是否异步(tru

Ghosthuo的专栏 974

Haystack框架实战:从零构建企业级智能问答系统

自然语言处理(NLP)技术通过让计算机理解和生成人类语言,正在深刻改变信息检索与交互方式。其核心原理在于将文本转化为机器可处理的向量表示,并通过语义相似度计算实现精准匹配。这一技术价值在于能够从海量非结构化数据中快速提取精准信息,大幅提升知识获取效率。在工程实践中,检索增强生成(RAG)架构结合了密集向量检索与大语言模型生成能力,成为构建智能问答、知识库助手等应用的主流方案。该架构通过将用户查询与文档库进行语义匹配,并为大语言模型提供精准上下文,有效提升了回答的准确性与可追溯性。本文以Haystack这一生

weixin_42521032的博客 577

AJAX 框架 -- Prototype

什么是Prototype Prototype是目前应用最为广泛的Ajax开发框架,它的特点是功能实用而且尺寸较小,非常适合在中小型的Web应用中使用。开发Ajax应用需要编写大量的客户端JavaScript脚本,而Prototype框架可以大大地简化JavaScript代码的编写工作。更难得的是,Prototype具备兼容各个浏览器的优秀特性,使用它可以不必考虑浏览器兼容性的问题。 Prototy...

weixin_34082789的博客 142

实战指南:在摩尔线程GPU上部署AI模型的完整流程

本文提供了一份详尽的实战指南,手把手教你如何在摩尔线程GPU上成功部署AI模型。内容涵盖从驱动安装、Docker环境配置,到核心的代码适配与模型运行全流程,并分享了性能调优技巧与常见避坑方法,旨在帮助开发者高效利用国产硬件进行AI应用开发。

weixin_29271263的博客 537

从零到一:RagFlow源码架构深度解析与二次开发实战指南

本文深入解析RagFlow源码架构,提供从环境搭建到二次开发的全流程实战指南。作为企业级AI搜索框架,RagFlow通过模块化设计和多模态处理能力,支持自定义智能体开发与文搜文档功能,帮助开发者高效构建智能搜索系统。

w1x2y3的博客 267

prototype之ajax

1 prototype.js中封装了ajax的技术。在引用了prototype.js后。如果想要ajax技术。只需要直接使用new Ajax.Request(url,{method:'',parameters:参数,onComplete: 函数 }) 如:var url="./main!list";   var param="name=xcl&password=123";   var myA

xclsky的博客 594

聚类模型-层次聚类

聚类模型 1、层次聚类 2、原型聚类-K-means 3、模型聚类-GMM 4、EM算法-LDA主题模型 5、密度聚类-DBSCAN 6、图聚类-谱聚类 一、层次聚类 一、聚类理论 ​ 一般来说,聚类是在训练样本的标签信息不知的情况下,学习样本内在的性质和规律,将有限的集合划分成ccc类。根据“方以类聚,物以群分”的思想,类内对象尽可能的相似,...

myazi 6503

prototype ajax介绍

一、prototype 中的ajax调用部分分析AjaxgetTransport() 获取一个基本的Request对象自动从 XMLHttpRequest Msxml2.XMLHTTP Microsoft.XMLHTTP 中选择,如果创建失败则返回falseactiveRequestCount 当前的活动reqeust数量 默认为0Ajax.Responders 全局responders[] re

dotproject的专栏 809

西门子V90伺服——章节0、西门子V90章节总述

格式规范:西门子V90伺服——章节1、产品介绍(1、伺服系统初步介绍)@[TOC](西门子V90伺服——章节1、产品介绍)课时1伺服系统初步介绍(1)课时2 伺服系统初步介绍(2)课时3 运动控制基础(1)课时4 运动控制基础(2)课时5 产品概览课时6 相关选件课时7 控制模式介绍(1)课时8 控制模式介绍(2)课时9 产品选型课时10 调试工具及相关资料介绍。

大小曲奇的博客 123

OAuth2.0集成SpringSecurity加JWT实现单点登录

单点登录(Single sign on),英文名称缩写SSO,SSO的意思就是在多系统的环境中,登录单方系统,就可以在不用再次登录的情况下访问相关受信任的系统。也就是说只要登录一次单体系统就可以

Nicky's blog 9037

转载:prototype的Ajax介绍

prototype的Ajax介绍[翻译完成]原文:http://www.prototypejs.org/learn/introduction-to-ajax]翻译:www.ruby-china.cn 站长]Prototype框架提供了非常容易和有意思的方法处理Ajax的调用,同时它也是浏览器安全的 。除了简单的请求外,这个模块(指prototype里的Ajax)也能很聪明的处理从服务器返回 的ja

没有天赋的IT人 1116

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

[转]prototype.js开发笔记(针对Ajax的JS框架Prototype的使用介绍)

/*针对Prototype框架使用讲解,文章非常经典,中文版,在Java.net上有,特转载过来,感谢作者和翻译者。原文地址:https://compdoc2cn.dev.java.net/prototype/html/prototype.js.cn.html*/  prototype.js开发笔记覆盖版本 1.3.11. P

heiyeluren的blog(黑夜路人的开源世界) 3492

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

[ZZ]prototype的Ajax介绍

http://www.ruby-china.cn/bbs/thread-53-1-1.html

征程 478

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

prototype.js开发笔记(针对Ajax的JS框架Prototype的使用介绍)

prototype.js开发笔记覆盖版本 1.3.1 1. Prototype是什么?或许你还没有用过它, prototype.js 是一个由Sam Stephenson写的JavaScript包。这个构思奇妙编写良好的一段兼容标准的一段代码将承担创造胖客户端, 高交互性WEB应用程序的重担。轻松加入Web 2.0特性。如果你最近体验了这个程序包,你很可能会发现文档并不是它的强项之一。像所有在我之

MK的专栏 903

ajax框架prototype.js的各大文档整理积累文档的介绍和下载

  下面是整理的ajax框架prototype框架的一些文档的介绍和下载地址。    ajax框架prototype开发笔记手册[PDF]<br>   ajax框架Prototype源码解读[PDF]<br>     ajax框架JavaScript prototype 的深度探索[PDF]<br>     ajax框架Prototype ...

a13476386553的专栏 187
上一篇: 一个 Ajax.Updater例子
下一篇: 如何用Javascript获取HTML的第二列第三个单元格的内容?
BenjaminP
博客等级 码龄15年 1粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值