学习YUI.Ext 第二天:EXT简介(二)

news/2024/7/5 23:16:55 标签: ext, ajax, 服务器, webservice, javascript, header

原文出处 翻译:Frank

使用Widgets

(Widget原意为“小器件”,现指页面中UI控件)

除了我们已经讨论过的核心JavaScript库,现在的Ext亦包括了一系列的最前端的JavaScirptUI组件库。文本以一个最常用的widget为例子,作简单的介绍。

MessageBox

比起略为沉闷的“HelloWolrd”消息窗口,我们做少许变化,前面我们写的代码是,单击某个段落便会高亮显示,现在是单击段落,在消息窗口中显示段落内容出来。
在上面的paragraphClicked的function中,将这行代码:

Ext.get(e.target).highlight();

替换为:

var paragraph = Ext.get(e.target);
paragraph.highlight();
Ext.MessageBox.show({
	title: 'Paragraph Clicked',
	msg: paragraph.dom.innerHTML,
	width:400,
	buttons: Ext.MessageBox.OK,
	animEl: paragraph
});

这里有些新的概念讨论一下。在第一行中我们创建了一个局部变量(Local Variable)来保存某个元素的引用,即被单击的那个DOM节点(本例中,我们总是段落paragrah,事因我们已经定义该事件与<p>标签发生关联的了)。为什么要这样做呢?嗯...观察上面的代码,我们需要引用同一元素来高亮显示,在MessageBox中也是引用同一元素作为参数使用。
一般来说,多次重复使用同一值(Value)或对象,是一个不好的方式,所以,作为一个好的OOP开发者,应该是将其分配到一个局部变量中,反复使用这变量!

现在,观察MessageBox的调用,准备作为阐述新概念的演示用。乍一看,这像一连串的参数传入到方法中,但仔细看,这是一个非常特别的语法。实际上,传入到MessageBox.show的只有一个参数:一个Object literal,包含一组属性和属性值。在Javascript中,Object Literal是动态的,你可在任何时候用{和}创建一个典型的对象(object)。其中的字符由一系列的name/value组成的属性,属性的格式是[property name]:[property value]。在整个Ext中,你将会经常遇到这种模式的语法,因此你应该消耗掉这知识!
使用Object Literal的原因是什么呢?主要的原因是“韧性(flexibility)",随时可新增、删除属性,亦可不管顺序地插入。而方法不需要改变。这也是多个参数的情况下,为最终开发者带来不少的方便(本例中的MessageBox.show())。例如,我们说这儿的foo.action方法,有四个参数,而只有一个是你必须传入的。本例中,你想像中的代码可能会是这样的foo.action(null, null, null, 'hello').,若果那方法用Object Literal来写,却是这样, foo.action({ param4: 'hello' }),这更易用和易读。

Gird

Gird是Ext中人们最想先睹为快的Widgets之一,也是最流行之一。好,让我们看看怎么轻松地创建一个Gird并运行。用下列代码替换ExtStart.js中全部语句:

Ext.onReady(function() {
	var myData = [
		['Apple',29.89,0.24,0.81,'9/1 12:00am'],
		['Ext',83.81,0.28,0.34,'9/12 12:00am'],
		['Google',71.72,0.02,0.03,'10/1 12:00am'],
		['Microsoft',52.55,0.01,0.02,'7/4 12:00am'],
		['Yahoo!',29.01,0.42,1.47,'5/22 12:00am']
	];

	var ds = new Ext.data.Store({
		proxy: new Ext.data.MemoryProxy(myData),
		reader: new Ext.data.ArrayReader({id: 0}, [
			{name: 'company'},
			{name: 'price', type: 'float'},
			{name: 'change', type: 'float'},
			{name: 'pctChange', type: 'float'},
			{name: 'lastChange', type: 'date', dateFormat: 'n/j h:ia'}
	])
	});
	ds.load();

	var colModel = new Ext.grid.ColumnModel([
		{header: "Company", width: 120, sortable: true, dataIndex: 'company'},
		{header: "Price", width: 90, sortable: true, dataIndex: 'price'},
		{header: "Change", width: 90, sortable: true, dataIndex: 'change'},
		{header: "% Change", width: 90, sortable: true, dataIndex: 'pctChange'},
		{header: "Last Updated", width: 120, sortable: true, 
		renderer: Ext.util.Format.dateRenderer('m/d/Y'), dataIndex: 'lastChange'}
	]);

	var grid = new Ext.grid.Grid('grid-example', {ds: ds, cm: colModel});
		grid.render();
		grid.getSelectionModel().selectFirstRow();
	});

这看上去很复杂,但实际上加起来,只有七行代码。第一行创建数组并作为数据源。实际案例中,你很可能从数据库、或者WebService那里得到动态的数据。接着,我们创建并加载data store, data store将会告诉Ext的底层库接手处理和格式化这些数据。接着,我们定义一个column模型,用来轻松地调配Gird的每一列参数。最后我们生成这个Gird,传入data store和column模型两个对象,进行渲染并选好第一行。不是太困难吧?如果一切顺利,搞掂之后你会看到像这样的:

ajaxjs.com/comm/UserFiles/Image/20070322731.gif" />

当然,你可能对这段代码的某些细节,并不完全掌握其中的含义(像MemoryProxy究竟是什么?)但先不要紧,这个例子的目的是告诉你,用少量的代码,创建一个富界面的多功能的UI组件而已——这是完全可能的,更多细节的内容,留给读者你自己学习吧。这儿有许多学习Grid的资源。Ext Grid教程、交叉Gird演示和Gird API文档。

还有更多的..

这只是冰山一角。还有一打的UI Widgets可以供调用,如 layouts, tabs, menus, toolbars, dialogs, tree view等等。请参阅API文档中范例演示。

使用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方法来访问(本例中该元素是“msg“的div)。当使用Element.load方法,请求(request)会被加工处理后发送,等待服务器的响应(Response),来自动替换元素的innerHTML。简单传入服务器url地址,加上字符串参数,便可以处理这个请求(本例中,参数值来自“name”元素的value),而text值就是请求发送时提示的文本,完毕后显示那个msg的div(因为开始时默认隐藏)。当然,和大多数Ext组件一样,UpdateManager有许多的参数可选,不同的Ajax请求有不同的方案。而这里仅演示最简单的那种。

PHP
<? if(isset(

原文出处 翻译:Frank

使用Widgets

(Widget原意为“小器件”,现指页面中UI控件)

除了我们已经讨论过的核心JavaScript库,现在的Ext亦包括了一系列的最前端的JavaScirptUI组件库。文本以一个最常用的widget为例子,作简单的介绍。

MessageBox

比起略为沉闷的“HelloWolrd”消息窗口,我们做少许变化,前面我们写的代码是,单击某个段落便会高亮显示,现在是单击段落,在消息窗口中显示段落内容出来。
在上面的paragraphClicked的function中,将这行代码:

Ext.get(e.target).highlight();

替换为:

var paragraph = Ext.get(e.target);
paragraph.highlight();
Ext.MessageBox.show({
	title: 'Paragraph Clicked',
	msg: paragraph.dom.innerHTML,
	width:400,
	buttons: Ext.MessageBox.OK,
	animEl: paragraph
});

这里有些新的概念讨论一下。在第一行中我们创建了一个局部变量(Local Variable)来保存某个元素的引用,即被单击的那个DOM节点(本例中,我们总是段落paragrah,事因我们已经定义该事件与<p>标签发生关联的了)。为什么要这样做呢?嗯...观察上面的代码,我们需要引用同一元素来高亮显示,在MessageBox中也是引用同一元素作为参数使用。
一般来说,多次重复使用同一值(Value)或对象,是一个不好的方式,所以,作为一个好的OOP开发者,应该是将其分配到一个局部变量中,反复使用这变量!

现在,观察MessageBox的调用,准备作为阐述新概念的演示用。乍一看,这像一连串的参数传入到方法中,但仔细看,这是一个非常特别的语法。实际上,传入到MessageBox.show的只有一个参数:一个Object literal,包含一组属性和属性值。在Javascript中,Object Literal是动态的,你可在任何时候用{和}创建一个典型的对象(object)。其中的字符由一系列的name/value组成的属性,属性的格式是[property name]:[property value]。在整个Ext中,你将会经常遇到这种模式的语法,因此你应该消耗掉这知识!
使用Object Literal的原因是什么呢?主要的原因是“韧性(flexibility)",随时可新增、删除属性,亦可不管顺序地插入。而方法不需要改变。这也是多个参数的情况下,为最终开发者带来不少的方便(本例中的MessageBox.show())。例如,我们说这儿的foo.action方法,有四个参数,而只有一个是你必须传入的。本例中,你想像中的代码可能会是这样的foo.action(null, null, null, 'hello').,若果那方法用Object Literal来写,却是这样, foo.action({ param4: 'hello' }),这更易用和易读。

Gird

Gird是Ext中人们最想先睹为快的Widgets之一,也是最流行之一。好,让我们看看怎么轻松地创建一个Gird并运行。用下列代码替换ExtStart.js中全部语句:

Ext.onReady(function() {
	var myData = [
		['Apple',29.89,0.24,0.81,'9/1 12:00am'],
		['Ext',83.81,0.28,0.34,'9/12 12:00am'],
		['Google',71.72,0.02,0.03,'10/1 12:00am'],
		['Microsoft',52.55,0.01,0.02,'7/4 12:00am'],
		['Yahoo!',29.01,0.42,1.47,'5/22 12:00am']
	];

	var ds = new Ext.data.Store({
		proxy: new Ext.data.MemoryProxy(myData),
		reader: new Ext.data.ArrayReader({id: 0}, [
			{name: 'company'},
			{name: 'price', type: 'float'},
			{name: 'change', type: 'float'},
			{name: 'pctChange', type: 'float'},
			{name: 'lastChange', type: 'date', dateFormat: 'n/j h:ia'}
	])
	});
	ds.load();

	var colModel = new Ext.grid.ColumnModel([
		{header: "Company", width: 120, sortable: true, dataIndex: 'company'},
		{header: "Price", width: 90, sortable: true, dataIndex: 'price'},
		{header: "Change", width: 90, sortable: true, dataIndex: 'change'},
		{header: "% Change", width: 90, sortable: true, dataIndex: 'pctChange'},
		{header: "Last Updated", width: 120, sortable: true, 
		renderer: Ext.util.Format.dateRenderer('m/d/Y'), dataIndex: 'lastChange'}
	]);

	var grid = new Ext.grid.Grid('grid-example', {ds: ds, cm: colModel});
		grid.render();
		grid.getSelectionModel().selectFirstRow();
	});

这看上去很复杂,但实际上加起来,只有七行代码。第一行创建数组并作为数据源。实际案例中,你很可能从数据库、或者WebService那里得到动态的数据。接着,我们创建并加载data store, data store将会告诉Ext的底层库接手处理和格式化这些数据。接着,我们定义一个column模型,用来轻松地调配Gird的每一列参数。最后我们生成这个Gird,传入data store和column模型两个对象,进行渲染并选好第一行。不是太困难吧?如果一切顺利,搞掂之后你会看到像这样的:

ajaxjs.com/comm/UserFiles/Image/20070322731.gif" />

当然,你可能对这段代码的某些细节,并不完全掌握其中的含义(像MemoryProxy究竟是什么?)但先不要紧,这个例子的目的是告诉你,用少量的代码,创建一个富界面的多功能的UI组件而已——这是完全可能的,更多细节的内容,留给读者你自己学习吧。这儿有许多学习Grid的资源。Ext Grid教程、交叉Gird演示和Gird API文档。

还有更多的..

这只是冰山一角。还有一打的UI Widgets可以供调用,如 layouts, tabs, menus, toolbars, dialogs, tree view等等。请参阅API文档中范例演示。

使用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方法来访问(本例中该元素是“msg“的div)。当使用Element.load方法,请求(request)会被加工处理后发送,等待服务器的响应(Response),来自动替换元素的innerHTML。简单传入服务器url地址,加上字符串参数,便可以处理这个请求(本例中,参数值来自“name”元素的value),而text值就是请求发送时提示的文本,完毕后显示那个msg的div(因为开始时默认隐藏)。当然,和大多数Ext组件一样,UpdateManager有许多的参数可选,不同的Ajax请求有不同的方案。而这里仅演示最简单的那种。

PHP
___FCKpd___5
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绝不会过问服务器的事情!要全面讨论这个问题,已超出本文的范围。推荐正在使用Ajax的您,深入阅读Ext Ajax教程。


下一步是?
现在你已经一睹Ext的芳容,知道她大概能做些什么了。下面的资源有助您进一步窥见其全貌:

  • 附加Ext教程
  • 程序员API文档
  • 交叉式演示
  • 用户论坛
  GET['name'])) {
echo 'From Server: '.

原文出处 翻译:Frank

使用Widgets

(Widget原意为“小器件”,现指页面中UI控件)

除了我们已经讨论过的核心JavaScript库,现在的Ext亦包括了一系列的最前端的JavaScirptUI组件库。文本以一个最常用的widget为例子,作简单的介绍。

MessageBox

比起略为沉闷的“HelloWolrd”消息窗口,我们做少许变化,前面我们写的代码是,单击某个段落便会高亮显示,现在是单击段落,在消息窗口中显示段落内容出来。
在上面的paragraphClicked的function中,将这行代码:

Ext.get(e.target).highlight();

替换为:

var paragraph = Ext.get(e.target);
paragraph.highlight();
Ext.MessageBox.show({
	title: 'Paragraph Clicked',
	msg: paragraph.dom.innerHTML,
	width:400,
	buttons: Ext.MessageBox.OK,
	animEl: paragraph
});

这里有些新的概念讨论一下。在第一行中我们创建了一个局部变量(Local Variable)来保存某个元素的引用,即被单击的那个DOM节点(本例中,我们总是段落paragrah,事因我们已经定义该事件与<p>标签发生关联的了)。为什么要这样做呢?嗯...观察上面的代码,我们需要引用同一元素来高亮显示,在MessageBox中也是引用同一元素作为参数使用。
一般来说,多次重复使用同一值(Value)或对象,是一个不好的方式,所以,作为一个好的OOP开发者,应该是将其分配到一个局部变量中,反复使用这变量!

现在,观察MessageBox的调用,准备作为阐述新概念的演示用。乍一看,这像一连串的参数传入到方法中,但仔细看,这是一个非常特别的语法。实际上,传入到MessageBox.show的只有一个参数:一个Object literal,包含一组属性和属性值。在Javascript中,Object Literal是动态的,你可在任何时候用{和}创建一个典型的对象(object)。其中的字符由一系列的name/value组成的属性,属性的格式是[property name]:[property value]。在整个Ext中,你将会经常遇到这种模式的语法,因此你应该消耗掉这知识!
使用Object Literal的原因是什么呢?主要的原因是“韧性(flexibility)",随时可新增、删除属性,亦可不管顺序地插入。而方法不需要改变。这也是多个参数的情况下,为最终开发者带来不少的方便(本例中的MessageBox.show())。例如,我们说这儿的foo.action方法,有四个参数,而只有一个是你必须传入的。本例中,你想像中的代码可能会是这样的foo.action(null, null, null, 'hello').,若果那方法用Object Literal来写,却是这样, foo.action({ param4: 'hello' }),这更易用和易读。

Gird

Gird是Ext中人们最想先睹为快的Widgets之一,也是最流行之一。好,让我们看看怎么轻松地创建一个Gird并运行。用下列代码替换ExtStart.js中全部语句:

Ext.onReady(function() {
	var myData = [
		['Apple',29.89,0.24,0.81,'9/1 12:00am'],
		['Ext',83.81,0.28,0.34,'9/12 12:00am'],
		['Google',71.72,0.02,0.03,'10/1 12:00am'],
		['Microsoft',52.55,0.01,0.02,'7/4 12:00am'],
		['Yahoo!',29.01,0.42,1.47,'5/22 12:00am']
	];

	var ds = new Ext.data.Store({
		proxy: new Ext.data.MemoryProxy(myData),
		reader: new Ext.data.ArrayReader({id: 0}, [
			{name: 'company'},
			{name: 'price', type: 'float'},
			{name: 'change', type: 'float'},
			{name: 'pctChange', type: 'float'},
			{name: 'lastChange', type: 'date', dateFormat: 'n/j h:ia'}
	])
	});
	ds.load();

	var colModel = new Ext.grid.ColumnModel([
		{header: "Company", width: 120, sortable: true, dataIndex: 'company'},
		{header: "Price", width: 90, sortable: true, dataIndex: 'price'},
		{header: "Change", width: 90, sortable: true, dataIndex: 'change'},
		{header: "% Change", width: 90, sortable: true, dataIndex: 'pctChange'},
		{header: "Last Updated", width: 120, sortable: true, 
		renderer: Ext.util.Format.dateRenderer('m/d/Y'), dataIndex: 'lastChange'}
	]);

	var grid = new Ext.grid.Grid('grid-example', {ds: ds, cm: colModel});
		grid.render();
		grid.getSelectionModel().selectFirstRow();
	});

这看上去很复杂,但实际上加起来,只有七行代码。第一行创建数组并作为数据源。实际案例中,你很可能从数据库、或者WebService那里得到动态的数据。接着,我们创建并加载data store, data store将会告诉Ext的底层库接手处理和格式化这些数据。接着,我们定义一个column模型,用来轻松地调配Gird的每一列参数。最后我们生成这个Gird,传入data store和column模型两个对象,进行渲染并选好第一行。不是太困难吧?如果一切顺利,搞掂之后你会看到像这样的:

ajaxjs.com/comm/UserFiles/Image/20070322731.gif" />

当然,你可能对这段代码的某些细节,并不完全掌握其中的含义(像MemoryProxy究竟是什么?)但先不要紧,这个例子的目的是告诉你,用少量的代码,创建一个富界面的多功能的UI组件而已——这是完全可能的,更多细节的内容,留给读者你自己学习吧。这儿有许多学习Grid的资源。Ext Grid教程、交叉Gird演示和Gird API文档。

还有更多的..

这只是冰山一角。还有一打的UI Widgets可以供调用,如 layouts, tabs, menus, toolbars, dialogs, tree view等等。请参阅API文档中范例演示。

使用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方法来访问(本例中该元素是“msg“的div)。当使用Element.load方法,请求(request)会被加工处理后发送,等待服务器的响应(Response),来自动替换元素的innerHTML。简单传入服务器url地址,加上字符串参数,便可以处理这个请求(本例中,参数值来自“name”元素的value),而text值就是请求发送时提示的文本,完毕后显示那个msg的div(因为开始时默认隐藏)。当然,和大多数Ext组件一样,UpdateManager有许多的参数可选,不同的Ajax请求有不同的方案。而这里仅演示最简单的那种。

PHP
___FCKpd___5
ASP.Net
___FCKpd___6
Cold Fusion
___FCKpd___7

最后一个关于Ajax的谜题就是,服务器实际处理请求和返回(Resposne)的具体过程。这个过程会是一个服务端页面,一个Servlet,一个Http处理器,一个WebService,甚至是Perl或CGI脚本,即任何一个服务器都可以处理http请求。无法预料的是,服务器返回什么是服务器的事情,无法给一个标准的例子来覆盖所有的可能性。(这段代码输出刚才我们传入'name'的那个值到客户端,即发送什么,返回什么)。

使用Ajax的真正挑战,是需经过适当处理过的手工代码,并相应格式化为服务端可用接受的数据结构。有几种格式供人们选择(最常用为JSON/XML)。正因Ext是一种与服务器中立的语言,使得其它特定语言的库亦可用于Ext处理Ajax服务。只要页面接受到结果是合适的数据格式,Ext绝不会过问服务器的事情!要全面讨论这个问题,已超出本文的范围。推荐正在使用Ajax的您,深入阅读Ext Ajax教程。


下一步是?
现在你已经一睹Ext的芳容,知道她大概能做些什么了。下面的资源有助您进一步窥见其全貌:

  • 附加Ext教程
  • 程序员API文档
  • 交叉式演示
  • 用户论坛
  GET['name'];
}
?>
ASP.Net
___FCKpd___6
Cold Fusion
___FCKpd___7

最后一个关于Ajax的谜题就是,服务器实际处理请求和返回(Resposne)的具体过程。这个过程会是一个服务端页面,一个Servlet,一个Http处理器,一个WebService,甚至是Perl或CGI脚本,即任何一个服务器都可以处理http请求。无法预料的是,服务器返回什么是服务器的事情,无法给一个标准的例子来覆盖所有的可能性。(这段代码输出刚才我们传入'name'的那个值到客户端,即发送什么,返回什么)。

使用Ajax的真正挑战,是需经过适当处理过的手工代码,并相应格式化为服务端可用接受的数据结构。有几种格式供人们选择(最常用为JSON/XML)。正因Ext是一种与服务器中立的语言,使得其它特定语言的库亦可用于Ext处理Ajax服务。只要页面接受到结果是合适的数据格式,Ext绝不会过问服务器的事情!要全面讨论这个问题,已超出本文的范围。推荐正在使用Ajax的您,深入阅读Ext Ajax教程。


下一步是?
现在你已经一睹Ext的芳容,知道她大概能做些什么了。下面的资源有助您进一步窥见其全貌:

  • 附加Ext教程
  • 程序员API文档
  • 交叉式演示
  • 用户论坛
 

http://www.niftyadmin.cn/n/1405726.html

相关文章

攻防世界-Railfence

根据题目提示&#xff0c;这应该是一道用栅栏密码的题 按照格式&#xff0c;应该要出现cyberpeace{}这样的编码 但尝试很多次&#xff0c;都得不到需要的格式 那可能是密码选择有问题 通过查看发现&#xff0c;栅栏密码有个变种是www型&#xff0c;尝试一下 就可以得到结果了…

sqlserver删除以什么开头的表

--把结果执行一下&#xff0c;不知你是要删除表还是删除表的记录&#xff1f;--删除表select drop table name from sysobjects where xtypeu and name like abc% --删除表记录select delete name from sysobjects where xtypeu and name like abc%

学习YUI.Ext 第三天:EXT:Menu组件

原文出处 视频教学翻译&#xff1a;Frank 概述: 讲讲如何使用Ext菜单器件 这篇教程中&#xff0c;我们将学习使用Ext的菜单器件&#xff08;Menu Widgets)。假设读者已经阅读过Ext简介一文&#xff0c;并懂得一些Ext的基本相关知识。菜单器件是Ext库中较迟实现的器件。它由几…

bugku-瑞士军刀

根据题目信息&#xff0c; 输入以下内容 可以看到有flag 用cat查看 就得到了flag 这道题不难&#xff0c;主要是要我们了解nc的用法和Linux的命令的用法

依据记录总数和每页大小取页数

依据记录总数和每页大小取页数例如&#xff1a;总记录数为totalrow&#xff0c;每页显示数为pagesize&#xff0c;现在要求总页数totalpage 1 常用方法&#xff1a;整除&#xff0c;判断余数&#xff0c;余数大于0&#xff0c;整除结果加1。 if(totalrow%pagesize0) totalpaget…

学习YUI.Ext 第四天--开始使用Grid

原文出处 翻译&#xff1a;Frank 概述: 本教程将以XML为数据源&#xff0c;带你进入Grid的世界。 本文涉及的范例代码&#xff0c;可以在这里下载。一个完成好的例子可在这里找到。 步骤一 定义数据(Data Definition) 首先要让Grid知道XML文档定义了每一行是什么数据。正如…

攻防世界-ics-06

看着题目描述和题目场景很唬人&#xff0c;选项太多了&#xff0c;但每个都点一遍之后&#xff0c;发现只有报表中心可以点 出现了要输入日期的选项题目场景中有2018年1月1日&#xff0c;尝试输入一下 但是仍然没有变化 用开发者工具查看 发现网页上的id和工具上显示的id不一…

Oracle实现分页语句和Sql server实现分页语句

Oracle实现分页语句 在oracle数据库中有这么一个函数ROWNUM&#xff0c;用来记录每一条数据所在的位置&#xff0c;利用这个函数&#xff0c;可以实现分页复杂的分页处理&#xff0c;这里我们只需要传入两个参数就可以实现了&#xff0c;如下 分页的SQL语句&#xff1a; select…