(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')">
分享到:
相关推荐
**Ajax.Request** 是Prototype中用于创建Ajax请求的核心对象。可以通过以下方式初始化: ```javascript new Ajax.Request('/some_url', { method: 'get' }); ``` - **参数解析**: - 第一个参数:请求的URL。 -...
在JavaScript的世界里,`prototype` 是一个非常关键的概念,它关联到对象的继承机制。`prototype` 是每个构造函数(function)的一个属性,用于定义该构造函数实例的共享属性和方法。当我们谈论“prototype ajax提交...
本示例将探讨如何使用Prototype库进行Ajax交互,通过`AjaxServlet.java`(一个Java后端处理程序)和`ajax2.jsp`(一个JSP页面,用于展示Ajax请求的结果)来实现这一功能。 首先,我们来看`AjaxServlet.java`。这是...
首先,Prototype中的Ajax对象是核心,它包括了几个关键方法: 1. **Ajax.Request**:这是发起Ajax请求的基础,你可以指定URL、HTTP方法(如GET或POST)以及回调函数来处理响应。例如: ```javascript new Ajax....
在JavaScript的世界里,Prototype是一个非常著名的库,它扩展了JavaScript的基本对象,并且提供了一系列实用的函数,使得开发者在处理DOM操作、AJAX交互等方面的工作变得更加简单。本案例将重点探讨如何利用...
在Prototype中,与Ajax相关的类和对象包括:Ajax、Ajax.Responsders、 Ajax.Base、Ajax.Request、Ajax. PeriodicalUpdater和Ajax.Updater,图2-3所示为这些类和对象之间的关系及其常用属性和方法,下面分别对这些类...
7. **Prototype的Ajax**:Prototype库提供了一个强大的Ajax模块,包括`Ajax.Request`用于发起请求,`Ajax.Updater`用于更新页面内容。它还提供了一些便利的选项和事件处理,使开发更加灵活。 8. **应用场景**:Ajax...
首先,Prototype为Ajax操作提供了一个统一的接口——`Ajax`对象。这个对象下包含了一系列方法,如`Request`、`Updater`、`Form`等,它们使得与服务器进行异步通信变得极其直观。例如,我们可以使用`Ajax.Request`来...
Prototype是JavaScript库,它为浏览器环境提供了许多便利的功能,特别是在处理AJAX(异步JavaScript和XML)方面。AJAX允许Web应用程序在不刷新整个页面的情况下与服务器交换数据并更新部分网页,极大地提升了用户...
Prototype AJAX 框架是JavaScript库Prototype的核心特性之一,它为Web开发提供了强大的异步通信功能。Prototype通过简化XMLHttpRequest对象的使用,使得开发者能够轻松地实现页面与服务器之间的数据交换,无需刷新...
此外,它还定义了一些新的对象和类,如Ajax对象、Element对象等,用于处理Ajax交互和DOM操作。 - 对Object类的扩展提供了如extend()方法,用于合并对象属性。 - 对Function类的扩展如bind(),允许设置函数的上下文...
#### 二、Prototype中的Ajax对象 Prototype框架通过`Ajax`对象提供了一系列用于执行Ajax请求的方法。这些方法包括: - `Ajax.Request`:最基础的Ajax请求方式,可以用来发送任意类型的请求。 - `Ajax.Updater`:...
4. **回调函数**:Prototype的Ajax对象支持多种回调函数,如onSuccess、onFailure、onComplete等,可以自定义处理不同阶段的逻辑。 在"prototypejs0113.htm"和"Onion的天空 » prototype中的ajax对象应用实例.htm"...
1. **Prototype中的Ajax对象**: Prototype的Ajax模块提供了多个实用方法,如Ajax.Request、Ajax.Updater、Ajax.PeriodicalUpdater等,它们帮助开发者轻松创建异步请求。Ajax.Request是基础,用于发送一个HTTP请求...
Prototype是一个强大的JavaScript库,它简化了DOM操作,并提供了许多高级特性,如Ajax、事件处理和对象扩展。在本实例中,Prototype的主要作用是实现无刷新的Ajax通信,即在用户填写登录信息并提交后,后台验证用户...
Prototype是一个强大的JavaScript框架,它扩展了JavaScript的基本对象和函数,简化了DOM操作,并提供了强大的功能来处理Ajax请求。以下是一些关键知识点: 1. **对象扩展**:Prototype扩展了JavaScript的核心类,如...
在Prototype框架中,很多对象如Array、Hash、ObjectRange以及与DOM和AJAX相关的对象都混合了Enumerable模块,使得这些对象能够利用Enumerable的方法。 Enumerable模块的设计理念类似于某些面向对象语言中的抽象基类...
在Prototype中,Ajax对象是通过`Ajax`模块提供的,它包含了多种方法来发起不同类型的HTTP请求,如`Ajax.Request`,`Ajax.Updater`和`Ajax.PeriodicalUpdater`。 **1. Ajax.Request** `Ajax.Request`是最基本的Ajax...
在 Prototype.js 中,`Ajax` 对象扮演着关键角色。它定义了一系列方法来处理 AJAX 请求,如 `getTransport`。`getTransport` 方法用于获取一个 `XMLHttpRequest` 对象,这是 AJAX 背后的核心技术,它允许浏览器与...
Prototype是JavaScript库的一个重要组成部分,它为JavaScript编程提供了一系列实用的功能,特别是在处理DOM操作、对象扩展和AJAX交互等方面。这个代码下载包含了Prototype的核心功能,是深入理解和学习JavaScript...