`
log_cd
  • 浏览: 1089244 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

prototype Ajax对象

阅读更多
(1)Ajax.Request类

    假如你有一个应用程序可以通过url http://yoursever/app/get_sales?empID=1234&year=1998与服务器通信。
<script> 
function searchSales(){ 
    var empID=$F('lstEmployees'); 
    var y=$F('lstYears'); 
    var url='http://yoursever/app/get_sales'; 
    var pars='empID='+empID+'&year='+y;     
     
    var myAjax=new Ajax.Request(url,{ 
        method:'get',parameters:pars,onComplete:showResponse         
    });     
} 
function showResponse(originalRequest) 
{ 
    //put returned XML in the textarea  
    $('result').value = originalRequest.responseText;  
}  
</script> 


参数{method: 'get', parameters: pars, onComplete: showResponse} 表示一个匿名对象的真实写法。他表示你传入的这个对象有一个名为 method 值为 'get'的属性,另一个属性名为 parameters 包含HTTP请求的查询字符串,和一个onComplete 属性/方法包含函数showResponse。

还有一些其它的属性可以在这个对象里面定义和设置,如 asynchronous,可以为true 或 false 来决定AJAX对服务器的调用是否是异步的(默认值是 true)。

XMLHttpRequest在HTTP请求期间将报告进度情况。这个进度被描述为四个不同阶段:Loading, Loaded, Interactive, 或 Complete。你可以使 Ajax.Request 对象在任何阶段调用自定义方法 ,Complete 是最常用的一个。想调用自定义的方法只需要简单的在请求的选项参数中的名为 onXXXXX 属性/方法中提供自定义的方法对象。

你传入的方法将会被用一个参数调用,这个参数是 XMLHttpRequest 对象自己。你将会用这个对象去得到返回的数据并且或许检查包含有在这次调用中的HTTP结果代码的 status 属性。

还有另外两个有用的选项用来处理结果。我们可以在onSuccess 选项处传入一个方法,当AJAX无误的执行完后调用, 相反的,也可以在onFailure选项处传入一个方法,当服务器端出现错误时调用。正如onXXXXX 选项传入的方法一样,这两个在被调用的时候也传入一个带有AJAX请求的XMLHttpRequest对象。

假设你想要在一个 AJAX 调用正在运行时,显示一些提示效果,像一个不断转动的图标之类的,你可以使用两个全局事件 Handler 来做到,其中一个在第 一个调用开始时显示图标,另一个在最后一个调用完成时隐藏图标。

<script> 
var myGlobalHandlers = { 
onCreate: function(){ 
Element.show('systemWorking'); 
}, 
onComplete: function() { 
if(Ajax.activeRequestCount == 0){ 
Element.hide('systemWorking'); 
} 
} 
}; 
Ajax.Responders.register(myGlobalHandlers); 
</script> 
<div id='systemWorking'><img src='spinner.gif'>Loading...</div> 


(2)Ajax.Updater类

如果你的服务器的另一端返回的信息已经是HTML了,那么使用这个程序包中 Ajax.Updater 类将使你更加容易。用它你只需提供哪一个元素需要被AJAX请求返回的HTML填充就可以了。
<script> 
function getHTML() 
{ 
var url = 'http://yourserver/app/getSomeHTML'; 
var pars = 'someParameter=ABC'; 

var myAjax = new Ajax.Updater( 
'placeholder', 
url, 
{ 
method: 'get', 
parameters: pars 
}); 
} </script> 
<input type=button value=GetHtml onclick="getHTML()"> 
<div id="placeholder"></div> 

指定处理错误的一个方法。这个是用 onFailure 选项来完成的。我们也指定了一个 placeholder 只有在成功请求之后才会被填充。为了完成这个目的我们修改了第一个参数从一个简单的元素id到一个带有两个属性的对象, success (一切OK的时候被用到) 和 failure (有地方出问题的时候被用到) 在下面的例子中没有用到failure属性,而仅仅在 onFailure 处使用了 reportError 方法。

<script> 
function getHTML() 
{ 
var url = 'http://yourserver/app/getSomeHTML'; 
var pars = 'someParameter=ABC'; 
var myAjax = new Ajax.Updater( 
{success: 'placeholder'}, 
url, 
{ 
method: 'get', 
parameters: pars, 
onFailure: reportError 
}); 
} 
function reportError(request) 
{ 
alert('Sorry. There was an error.'); 
} 
</script> 
<input type=button value=GetHtml onclick="getHTML()"> 
<div id="placeholder"></div> 

如果你的服务器逻辑是连同HTML 标记返回JavaScript 代码, Ajax.Updater对象可以执行那段JavaScript代码。为了使这个对象对待响应为JavaScript,你只需在最后参数的对象构造方法中简单加入evalScripts: true属性。

(3)Enumerable对象

prototype.js了给我们一个 Enumerable对象,它实现了很多和可迭代数据进行交互的窍门。

function showList(){ 
var simpsons = ['Homer', 'Marge', 'Lisa', 'Bart', 'Meg']; 
            simpsons.each( function(familyMember){ //迭代器函数
alert(familyMember); 
}); 
} 


新的Arrays的迭代功能

exampleA:
<script> 
function findEmployeeById(emp_id){ 
var listBox = $('lstEmployees') 
var options = listBox.getElementsByTagName('option'); 
options = $A(options); 
var opt = options.find( function(employee){ 
return (employee.value == emp_id); 
}); 
alert(opt.innerHTML); //displays the employee name 
} 
</script> 
<select id="lstEmployees" size="10" > 
<option value="5">Buchanan, Steven</option> 
<option value="8">Callahan, Laura</option> 
<option value="1">Davolio, Nancy</option> 
</select> 
<input type="button" value="Find Laura" onclick="findEmployeeById(8);" > 


exampleB:
<script> 
function showLocalLinks(paragraph){ 
paragraph = $(paragraph); 
var links = $A(paragraph.getElementsByTagName('a')); 
//find links that do not start with 'http' 
var localLinks = links.findAll( function(link){ 
var start = link.href.substring(0,4); 
return start !='http'; 
}); 
//now the link texts 
var texts = localLinks.pluck('innerHTML'); 
//get them in a single string 
var result = texts.inspect(); 
alert(result); 
} 
</script> 
<p id="someText"> 
This <a href="http://othersite.com/page.html">text</a> has 
a <a href="#localAnchor">lot</a> of 
<a href="#otherAnchor">links</a>. Some are 
<a href="http://wherever.com/page.html">external</a> 
and some are <a href="#someAnchor">local</a> 
</p> 
<input type=button value="Find Local Links" onclick="showLocalLinks('someText')">
分享到:
评论

相关推荐

    prototype Ajax 深度解析

    在Prototype中,与Ajax相关的类和对象包括:Ajax、Ajax.Responsders、 Ajax.Base、Ajax.Request、Ajax. PeriodicalUpdater和Ajax.Updater,图2-3所示为这些类和对象之间的关系及其常用属性和方法,下面分别对这些类...

    prototype.js开发笔记--让你精通prototype开发

    1.4. Ajax 对象 1.4.1. 使用 Ajax.Request类 1.4.2. 使用 Ajax.Updater 类 2. prototype.js参考 2.1. JavaScript 类的扩展 2.2. 对 Object 类的扩展 2.3. 对 Number 类的扩展 2.4. 对 Function 类的扩展 2.5. 对 ...

    prototype1.7.js

    prototype.js 是Sam Stephenson写的一个非常优雅的java script基础类库,对java script做了大量的扩展,而且很好的支持Ajax,兼容标准的类库,能帮助你轻松建立有高度互动的web2.0特性的丰富的客户端页面。...

    prototype.js的Ajax对象

    我想prototype.js里的ajax对象肯定吸引了不少人,大量封装好的ajax逻辑的类,对于我们这些初学者使用ajax有很大的帮助。 以下用一个我的具体使用例子来解释:效果看这里 1. Ajax.Request 你可以这样创建它 代码如下...

    prototype.js

    prototype.js是一个非常优雅的javas cript基础类库,对javas cript做了大量的扩展,而且很好的支持Ajax,国外有多个基于此类库实现的效果库,也做得很棒。 prototype.js不仅是一个有很大实用价值的js库,而且有很高...

    Prototype学习笔记(最新整理)

    Ajax 对象 5 3.1. 使用 Ajax.Request类 5 3.2. 使用 Ajax.Updater 类 7 4. prototype.js参考 9 4.1. JavaScript 类的扩展 9 4.2. 对 Object 类的扩展 9 4.3. 对 Number 类的扩展 9 4.4. 对 ...

    prototype.js开发手册

    prototype.js是一个非常优雅的javas cript基础类库,对javas cript做了大量的扩展,而且很好的支持Ajax,国外有多个基于此类库实现的效果库,也做得很棒。 prototype.js不仅是一个有很大实用价值的js库,而且有很高...

    Prototype_1.6 JavaScript代码和中文帮助手册

     prototype.js是一个非常优雅的javascript基础类库,对javascript做了大量的扩展,而且很好的支持Ajax,国外有多个基于此类库实现的效果库,也做得很棒。  prototype.js不仅是一个有很大实用价值的js库,而且有很...

    AJAX之Prototype入门学习.docx

    其对现有的部分 Javascript 对象比如 Object 、 Function 、 Dom 、 String 等进行扩展,并且对 Ajax 应用进行封装,借此提供了兼容标准的更加易于使用的类库,极大的方便开发人员快速创建具备高度交互性的 Web2.0 ...

    Ajax完全自学手册(源代码).rar

    Ajax完全自学手册PPT和源代码分来上传了,需要PPT的请自己在我的资源里面查找。 1.本书1~22章所附代码的运行环境 操作系统:Windows 2003、Windows XP Professional,或者Windows 2000 开发环境:Microsoft Visual ...

    Prototype使用指南之ajax

    Prototype中的ajax.js提供了一个非常好用的ajax框架,一般应用中简单的调用以下代码就可以了 ...Ajax对象: 只有一个getTransport方法,返回一个XMLHttpRequest对象,另外有一个activeRequestCount

    prototype and script.aculo.us框架

    ajax的两个框架,prototype是一个非常基础的框架,它对JavaScript固有的对象进行了扩展,还提供了若干自定义的类和对象,帮助简化JavaScript的开发。script.aculo.us框架是构建在prototype之上的JavaScript脚本库,...

    Ajax基础教程(扫描版)

    5.7.1 通过prototype属性建立面向对象的javascript 142 5.7.2 私有属性和使用javascript的信息隐藏 146 5.7.3 javascript中基于类的继承 148 5.7.4 汇合 149 5.8 小结 152 第6章 使用jsunit测试javascript代码 ...

    Ajax完全自学手册(PPT)

    Test4Prototype.htm 原型链继承 ExtendsExamble.htm 继承实例 第6章 错误处理 Test4Exception.htm 异常 Test4Onerror.htm onerror错误处理 Test4Onerror1.htm onerror错误处理 Test4TryCatch1....

    RICO 1.1 附 prototype 1.4

    做Ajax的朋友恐怕都听说过rico,这个是新出的 rico 1.1.0稳定版本,rico用到了prototype库,因此压缩包内还附带了prototype 1.4,另外还有RicoAjaxEngine.pdf ,可惜是英文的。 网址是:...

    Prototype Enumerable对象 学习第1/2页

    Enumerable是Prototype框架的基石,而Enumerable不单独使用,在Prototype中其它对象mix了Enumerable里面的方法,这样就可以在这些对象上应用Enumerable的方法,这样的对象有:Array,Hash,ObjectRange,还有一些和...

    《疯狂Ajax讲义(第3版).part3

    第二章 XMLHttpRequest对象详解 第三章 jquery库详解 第四章 基于jquery的应用:电子相册系统 第五章 Ext JS 核心技术详解 第六章 Ext JS界面组件详解 第七章 Prototype库详解 第八章 基于Prototype库的应用:...

    基于J2EE的Ajax宝典

    本书介绍的内容非常全面,覆盖了Ajax技术的各个方面,包括Ajax技术的核心对象XMLHttpRequest对象、JavaScript脚本的详细知识以及DOM和XML的相关知识。除了Ajax的这些基础知识外,本书还详细介绍了Ajax的5个相关框架...

    《疯狂Ajax讲义(第3版).part4

    第二章 XMLHttpRequest对象详解 第三章 jquery库详解 第四章 基于jquery的应用:电子相册系统 第五章 Ext JS 核心技术详解 第六章 Ext JS界面组件详解 第七章 Prototype库详解 第八章 基于Prototype库的应用:...

    prototype 1.6

    prototype是一个非常优雅的JS库,定义了JS的面向对象扩展,DOM操作API,事件等等,之上还有rico/script.aculo.us实现一些JS组件功能和效果(不过目前还不是很完善),以prototype为核心,形成了一个外围的各种各样的JS...

Global site tag (gtag.js) - Google Analytics