Ext2.0.2经典的一个JS组件(带EXT中文手册)(5)
作者:姚海啸 来源:Yaohaixiao’s Blog 发布时间:2009-04-13 12:24:00
使用Ajax
在弄好一些页面后,你已经懂得在页面和脚本之间的交互原理(interact)。接下来,你应该掌握的是,怎样与远程服务器(remote server)交换数据,常见的是从数据库加载数据(load)或是保存数据(save)到数据库中。通过JavaScript异步无刷新交换数据的这种方式,就是所谓的Ajax。Ext内建卓越的Ajax支持,例如,一个普遍的用户操作就是,异步发送一些东西到服务器,然后,UI元素根据回应(Response)作出更新。这是一个包含text input的表单,一个div用于显示消息(注意,你可以在ExtStart.html中加入下列代码,但这必须要访问服务器):
<div id=”msg” style=”visibility: hidden”></div>
Name: <input type=”text” id=”name” /><br />
<input type=”button” id=”oKButton” value=”OK” />
接着,我们加入这些处理交换数据的JavaScript代码到文件ExtStart.js中(用下面的代码覆盖):
Ext.onReady(function(){
Ext.get(’oKButton’).on(’click’, function(){
var msg = Ext.get(’msg’);
msg.load({
url: [server url], //换成你的URL
params: ‘name=’ + Ext.get(’name’).dom.value,
text: ‘Updating…’
});
msg.show();
});
});
这种模式看起来已经比较熟悉了吧!先获取按钮元素,加入单击事件的监听。在事件处理器中(event handler),我们使用一个负责处理Ajax请求、接受响应(Response)和更新另一个元素的Ext内建类,称作UpdateManager。 UpdateManager可以直接使用,或者和我们现在的做法一样,通过Element的load方法来引用(本例中该元素是id为“msg“的 div)。当使用Element.load方法,请求(request)会在加工处理后发送,等待服务器的响应(Response),来自动替换元素的 innerHTML。简单传入服务器url地址,加上字符串参数,便可以处理这个请求(本例中,参数值来自“name”元素的value),而text值是请求发送时提示的文本,完毕后显示那个msg的div(因为开始时默认隐藏)。当然,和大多数Ext组件一样,UpdateManager有许多的参数可选,不同的Ajax请求有不同的方案。而这里仅演示最简单的那种。
PHP
<?
if(isset($_GET['name'])) {
echo ‘From Server: ‘.$_GET['name'];
}
?>
ASP.Net
protected void Page_Load(object sender, EventArgs e)
{
if (Request["name"] != null)
{
Response.Write(”From Server: ” + Request["name"]);
Response.End();
}
}
Cold Fusion
<cfif StructKeyExists(url, “name”)>
<cfoutput>From Server: #url.name#</cfoutput>
</cfif>
最后一个关于Ajax隐晦的地方就是,服务器实际处理请求和返回(Resposne)是具体过程。这个过程会是一个服务端页面,一个Servlet,一个 Http调度过程,一个WebService,甚至是Perl或CGI脚本,即不指定一个服务器都可以处理的http请求。让人无法预料的是,服务器返回什么是服务器的事情,无法给一个标准的例子来覆盖阐述所有的可能性。(这段代码输出刚才我们传入’name’的那个值到客户端,即发送什么,返回什么)。
使用Ajax的真正挑战,是需要进行适当的手工编码,并相应格式化为服务端可用接受的数据结构。有几种格式供人们选择(最常用为JSON/XML)。正因 Ext是一种与服务器语言免依赖的机制,使得其它特定语言的库亦可用于Ext处理Ajax服务。只要页面接受到结果是EXT能处理的数据格式,Ext绝不会干涉服务器其他的事情!要全面讨论这个问题,已超出本文的范围。推荐正在Ajax环境下开发的您,继续深入阅读Ext Ajax教程。


猜你喜欢
- 话说凌晨刚折腾完一台MySQL 5.7.19版本的安装,未曾料到早上MySQL官方就发布了最新的5.7.20版本。这个版本看似更新不多,但是
- 本文实例讲述了php字符串过滤strip_tags()函数用法。分享给大家供大家参考,具体如下:strip_tags — 从字符串中去除 H
- 如何在刷新链接之前验证文件是否存在?如何在每次刷新链接之前,验证链接文件是否确实存在?特别是对于数据库中的文件,我们必须在处理它之前确认一下
- 一、检查系统版本[root@node ~]# cat /etc/os-release NAME="CentOS Linux&quo
- 在需要使用到大批量数据的时候,即可以使用随机数据进行生成操作Faker的介绍Faker是python方向的一个第三方库,主要用来创造伪数据,
- 在认识ImageMagick之前,我使用的图像浏览软件是KuickShow,截图软件是KSnapShot,这两款软件都是KDE附带的软件,用
- 1、概述在《Golang常用语法糖》这篇博文中我们讲解Golang中常用的12种语法糖,在本文我们主要讲解下接收者方法语法糖。在介绍Gola
- 文档概览本文基于express、express-session实现了简易的登录/登出功能,完整的代码示例可以在这里找到。环境初始化首先,初始
- 接口模块需要用 API 来提供对外服务的接口,当然也可以直接连数据库来取,但是这样就需要知道数据库的连接信息,不太安全,而且需要配置连接,所
- 一、什么是数据库连接池就是一个容器持有多个数据库连接,当程序需要操作数据库的时候直接从池中取出连接,使用完之后再还回去,和线程池一个道理。二
- google前不久推出了Google Ajax Library API,说白了就是提供几个知名js库的host,目前有:jQueryprot
- 1、给定一个数据集noise-data-1.txt,该数据集中保护大量的缺失值(空格、不完整值等)。利用“全局常量”、“均值或者中位数”来填
- 通过XSL转换XML文件 最近,我喜欢上了XML编程,但又苦于它的美观程度又不够,找了许多书才搞定。用XML好是蛮好,但它还是不太适合做显示
- 1,CSS,JS,IMG一个都不能少运行代码框<style type="text/css">&l
- 1. 单行导入与多行导入在 Go 语言中,一个包可包含多个 .go 文件(这些文件必须得在同一级文件夹中),只要这些 .go 文件的头部都使
- 下载中间件在每一个scrapy工程中都有一个名为 middlewares.py 的文件,这个就是中间件文件其中下载中间件的类为 XxxDow
- 问题描述前端时间在公司的时候,要使用angular开发一个网站,因为angular很适合前后端分离,所以就做了一个简单的图书管理系统来模拟前
- 本文分析了mysql登录报错提示:ERROR 1045 (28000)的解决方法。分享给大家供大家参考,具体如下:一、问题:公司linux系
- 通常python安装包都会被默认装在/usr/local/pythonx/lib/site-packages(linux),但是我们有时想自
- 下面先给大家介绍下python获取酷狗音乐top500的下载地址 MP3格式,具体代码如下所示:# -*- coding: utf-8 -*