- 浏览: 3560836 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (1491)
- Hibernate (28)
- spring (37)
- struts2 (19)
- jsp (12)
- servlet (2)
- mysql (24)
- tomcat (3)
- weblogic (1)
- ajax (36)
- jquery (47)
- html (43)
- JS (32)
- ibatis (0)
- DWR (3)
- EXTJS (43)
- Linux (15)
- Maven (3)
- python (8)
- 其他 (8)
- JAVASE (6)
- java javase string (0)
- JAVA 语法 (3)
- juddiv3 (15)
- Mule (1)
- jquery easyui (2)
- mule esb (1)
- java (644)
- log4j (4)
- weka (12)
- android (257)
- web services (4)
- PHP (1)
- 算法 (18)
- 数据结构 算法 (7)
- 数据挖掘 (4)
- 期刊 (6)
- 面试 (5)
- C++ (1)
- 论文 (10)
- 工作 (1)
- 数据结构 (6)
- JAVA配置 (1)
- JAVA垃圾回收 (2)
- SVM (13)
- web st (1)
- jvm (7)
- weka libsvm (1)
- weka屈伟 (1)
- job (2)
- 排序 算法 面试 (3)
- spss (2)
- 搜索引擎 (6)
- java 爬虫 (6)
- 分布式 (1)
- data ming (1)
- eclipse (6)
- 正则表达式 (1)
- 分词器 (2)
- 张孝祥 (1)
- solr (3)
- nutch (1)
- 爬虫 (4)
- lucene (3)
- 狗日的腾讯 (1)
- 我的收藏网址 (13)
- 网络 (1)
- java 数据结构 (22)
- ACM (7)
- jboss (0)
- 大纸 (10)
- maven2 (0)
- elipse (0)
- SVN使用 (2)
- office (1)
- .net (14)
- extjs4 (2)
- zhaopin (0)
- C (2)
- spring mvc (5)
- JPA (9)
- iphone (3)
- css (3)
- 前端框架 (2)
- jui (1)
- dwz (1)
- joomla (1)
- im (1)
- web (2)
- 1 (0)
- 移动UI (1)
- java (1)
- jsoup (1)
- 管理模板 (2)
- javajava (1)
- kali (7)
- 单片机 (1)
- 嵌入式 (1)
- mybatis (2)
- layui (7)
- asp (12)
- asp.net (1)
- sql (1)
- c# (4)
- andorid (1)
- 地价 (1)
- yihuo (1)
- oracle (1)
最新评论
-
endual:
https://blog.csdn.net/chenxbxh2 ...
IE6 bug -
ice86rain:
你好,ES跑起来了吗?我的在tomcat启动时卡在这里Hibe ...
ES架构技术介绍 -
TopLongMan:
...
java public ,protect,friendly,private的方法权限(转) -
贝塔ZQ:
java实现操作word中的表格内容,用插件实现的话,可以试试 ...
java 读取 doc poi读取word中的表格(转) -
ysj570440569:
Maven多模块spring + springMVC + JP ...
Spring+SpringMVC+JPA
Ext.onReady(function() { // Ext.MessageBox.alert("title","dd") ; var btnLogin = Ext.getDom("btnLogin"); // 获取id是btnLogin的按钮 btnLogin.addEventListener("click", function() { var username = Ext.getDom("username").value; //获取id为username表单的值 var password = Ext.getDom("pwd").value; usernamestr = new String(username) + ""; passwordstr = new String(password) + ""; // 对输入的用户名和密码进行客户端的检验 Ext.Ajax.request({ url : 'login.action', method : "POST", timeout : 10000, params : { username : usernamestr, password : passwordstr }, success : function(response) { var text = response.responseText; var status = Ext.decode(text).status; //转化为json对象 if (status == 'success') { // 跳转 window.location = "success.jsp"; //页面段跳转 } else if (status == 'failure') { // 提示错误 Ext.MessageBox.alert("注意", "用户名或者密码错误,请检查!"); } }, failure : function(response, opts) { var text = response.responseText; alert("加载失败!" + text); } }); }, true); });
本篇主要介绍一下ExtJs常用的几个对JS语法的扩展支持,包括Ajax封装,函数事件操作封装,还有扩展的常用函数等。Ajax服务端交互式操作是提交到.NET MVC。后续服务端交互都采用这一方式实现。
一、ExtJs中的Ajax:Ext.Ajax.request
通过客户端向服务端发送Ajax请求,可以“直接”调用MVC的action方法,并传递参数,action返回值可以是普通字符串,也可以是json对象。请求可以添加自定义头信息。看下面例子:
1.异步请求,发送自定义请求头:
html页面如下:
[html]
1234<
h1
>Ajax服务端请求</
h1
>
<
div
class
=
"content"
id
=
"div1"
>
<
div
>一共发起了<
span
id
=
"span1"
style
=
"color:Red"
>0</
span
>次请求。</
div
>
</
div
>
我们先通过一个按钮单击事件触发ajax请求,服务端返回string到客户端,异步请求时,为请求添加自定义头“userHeader”,并在服务端获取。如下是js代码:
[Js]
123456789101112131415161718192021222324Ext.onReady(
function
() {
new
Ext.Button({
renderTo:
"div1"
,
text:
"后台Ajax提交"
,
handler:
function
() {
Ext.Ajax.request({
url:
'Ajax_Func1'
,
headers: {
'userHeader'
:
'userMsg'
},
params: { a: 10, b: 20 },
method:
'GET'
,
success:
function
(response, options) {
Ext.MessageBox.alert(
'成功'
,
'从服务端获取结果: '
+ response.responseText);
},
failure:
function
(response, options) {
Ext.MessageBox.alert(
'失败'
,
'请求超时或网络故障,错误编号:'
+ response.status);
}
});
},
id:
"bt1"
});
});
服务端MVC接受请求的action代码:
[C#]
12345public
ContentResult Ajax_Func1(
int
a,
int
b)
{
string
userHeaderMsg = Convert.ToString(Request.Headers[
"userHeader"
]);
return
Content((a + b).ToString() +
",userHeader:"
+ userHeaderMsg);
}
然后我们在火狐中调试:自定义请求头已被添加。
查看执行结果:
2.异步请求,返回json:
如果要返回json到客户端,MVC需要使用JsonResult的acton,自动将C#对象转换为json格式。客户端代码如下:
[Js]
123456789101112131415161718192021222324252627282930Ext.onReady(
function
() {
new
Ext.Button({
renderTo:
"div1"
,
text:
"后台Ajax提交方式2返回JSON"
,
handler:
function
() {
Ext.Ajax.request({
url:
'Ajax_Func2'
,
params: { n: 10 },
method:
'POST'
,
callback:
function
(options, success, response) {
if
(success) {
var
responseJson = Ext.JSON.decode(response.responseText);
Ext.Msg.alert(
"成功"
, options.params.n +
"的阶乘是:<font color='red'>"
+ responseJson.n1 +
"</font><br />"
+ options.params.n +
"的累加是:<font color='red'>"
+ responseJson.n2 +
"</font>"
);
}
else
{
Ext.Msg.confirm(
'失败'
,
'请求超时或网络故障,错误编号:['
+ response.status +
']是否要重新发送?'
,
function
(btn) {
if
(btn ==
'yes'
) {
Ext.Ajax.request(options);
}
});
}
}
});
}
});
});
服务端代码:
[C#]
123456789101112131415161718public
JsonResult Ajax_Func2(
int
n)
{
int
n1 = 1;
int
n2 = 0;
for
(
int
i = 1; i <= n; i++)
{
n1 *= i;
n2 += i;
}
var data =
new
{
n1 = n1,
n2 = n2
};
return
Json(data, JsonRequestBehavior.AllowGet);
}
查看执行结果,我们先看看火狐调试响应的结果,可以查看返回的json内容:
界面执行结果:
3.异步文件上传
ExtJs通过强大的内部封装,使ajax请求看起来可以直接提交二进制流数据。每当提交文件数据时,ExtJs会自动创建iframe,在iframe中提交。提交完成后又自动移去,一切显得天衣无缝。下面演示一个通过异步请求无刷新文件上传的例子:
[html][Js]
1234567<
h1
>Ajax文件上传</
h1
>
<
div
class
=
"content"
id
=
"div2"
>
<
form
id
=
"form1"
>
请选择文本文件:<
input
type
=
"file"
name
=
"file"
/>
<
input
type
=
"button"
id
=
"button1"
value
=
"上传"
/>
</
form
>
</
div
>
[C#]
1234567891011//文件上传
Ext.get(
"button1"
).on(
"click"
,
function
() {
Ext.Ajax.request({
url:
"Ajax_FileUp"
,
isUpload:
true
,
form:
"form1"
,
success:
function
(response) {
Ext.MessageBox.alert(
"上传成功,文本文件内容:"
, response.responseText);
}
});
});
123456public
ContentResult Ajax_FileUp(HttpPostedFileBase file)
{
System.IO.StreamReader r =
new
System.IO.StreamReader(file.InputStream, System.Text.UTF8Encoding.Default);
var str = r.ReadToEnd();
return
Content(str);
}
提交后我们发现,上传的文本文件内容已经被正确读取。
4.异步请求事件
当发起ajax请求之前,可以监听beforerequest事件,本例每当发起ajax事件时,都会把计算器+1:
[Js]
123var
ajaxCount = 0;
//每当Ajax请求发起时触发:
Ext.Ajax.on(
'beforerequest'
,
function
() { Ext.get(
"span1"
).update(++ajaxCount) },
this
);
这样,每当ajax发起就可以被记录,可用作日志等。
二、元素对象Ajax式更新:Ext.Updater,[已弃用]
ExtJs为我们提供了异步方式更新dom元素内容的支持。这可以用在一些异步交互性比较强的地方,例如webgame等。我们来看看具体实现方式。
我们先在视图中写这样的html:
[html]
123<
div
id
=
"div1"
title
=
"d1"
style
=
"width:50px; height:50px; position:absolute; background-color:Green; top:100px"
>1</
div
>
<
div
id
=
"div2"
>2</
div
>
<
form
id
=
"form1"
><
input
id
=
"a"
name
=
"a"
value
=
"20"
/><
input
id
=
"b"
name
=
"b"
value
=
"50"
/></
form
>
1.单个元素的及时更新
现在,我要通过c#在服务端计算a+b的值,然后将结果填到div1元素里面:
[Js][c#]
1234Ext.get(
"div1"
).getUpdater().update({
url:
"Ext/UpdaterFunc"
,
params: { a: 10, b: 3 }
});
1234public
ContentResult UpdaterFunc(
int
a,
int
b)
{
return
Content(
"a+b="
+ (a + b));
}
页面加载后,将自动更新div1。再看看另外一种写法:
[Js]
123456Ext.get(
"div1"
).load({
url:
"Ext/UpdaterFunc"
,
scripts:
true
,
params: { a: 10, b: 47 },
text:
"请等待..."
});
2.通过提交表单更新
[Js]
1Ext.get(
"div1"
).getUpdater().formUpdate(
"form1"
,
"Ext/UpdaterFunc"
);
效果一样,只不过提交的参数来源于表单,参数名为对应的name值。
3.周期性更新
[Js]
123//周期性更新
var
up =
new
Ext.Updater(
"div1"
);
up.startAutoRefresh(5,
"Ext/UpdaterFunc"
, { a: 10, b: 47 });
这段代码运行后将每隔5秒钟更新一次div1,用于需要适时核对服务端和客户端状态的情形。
作者:李盼(Lipan) 出处:[Lipan] (http://www.cnblogs.com/lipan/) 版权声明:本文的版权归作者与博客园共有。转载时须注明本文的详细链接,否则作者将保留追究其法律责任。
发表评论
-
extjs4 ajax 同步设置
2012-08-31 13:42 1963// 把新的数据发送到服务端去,保存 E ... -
extjs4 bug查询
2012-08-25 15:57 5049Bug Fixes Fix tabs mouseo ... -
ExtJS4学习笔记八--Template的使用(转)
2012-08-24 13:32 1631http://hnhnhnhnhn.iteye ... -
ASP.NET+ExtJs4.0+表单提交submit,上传图片到服务器(转)
2012-08-22 12:44 2722ASP.NET+ExtJs4.0+表单提交submi ... -
EXTJS 4 form population with JSON read
2012-08-22 12:31 1855EXTJS 4 form population wi ... -
ExtJS Tree same parentNode
2012-08-19 17:22 1620ExtJS Tree same parentNode ... -
extjs4 一个很专业demo的博客
2012-08-19 16:57 1947http://extjstutorial.info/extjs ... -
ExtJs 4 – XTemplates
2012-08-18 20:34 1637Home › post › ExtJs 4 – XTe ... -
extjs4 tree操作
2012-08-18 20:25 5194Extjs tree 如何获得选中的节点 ... -
extjs4 打开pdf文件
2012-08-18 20:09 5883buttons: [{ text :'OPE ... -
cannot read property 'flex' of undefined
2012-08-18 13:45 7164Extjs的一个错误,谷歌浏览器捕获到的, 后来查了下原因, ... -
extjs4 初始化的一个方法
2012-08-17 21:03 1745initComponent : function() { ... -
extjs4 tree2
2012-08-16 15:26 1370http://blog.csdn.net/clskkk2222 ... -
Ext中的get、getDom、getCmp、getBody、getDoc的区别
2012-08-16 13:36 1612Ext中的get、getDom、getCmp、g ... -
extjs4 学习博客
2012-08-12 16:03 1442http://blog.csdn.net/zhaoqilian ... -
extjs4 上传文件
2012-08-11 23:23 1608http://blog.sina.com.cn/s/blog_ ... -
extjs4 struts2 grid 新增、删除、修改
2012-08-11 20:22 2083http://blog.csdn.net/dys1990/ar ... -
extjs4做的grid,带分页,搜索 (转)
2012-08-11 14:32 2237【原创】extjs4做的grid,带分页,搜索 最 ... -
extjs4 tree
2012-08-11 09:27 1976How To Use ExtJS 4 TreePan ... -
ExtJs xtype
2012-08-10 21:45 1673ExtJs xtype一览 (2012-06-2 ...
相关推荐
这通常是EXTJS4中的Grid面板的数据源,可以通过store获取。确保数据是干净且适合Excel格式的,例如,处理日期和数字格式。 2. **数据转换**:将数据转换成Excel可以理解的格式。这可能涉及到将数据转换为CSV(逗号...
ExtJS 4中的Button组件通过一系列可配置的选项提供了高度定制化的可能,下面将详细介绍这些配置项: - **id**:为按钮分配一个唯一的标识符,便于后续在代码中引用。 - **text**:设置按钮上的文本显示内容。 - **...
#### 一、Extjs4简介与获取途径 - **概述**:Extjs4是一款基于JavaScript的企业级富客户端Web应用程序开发框架,旨在简化前端开发过程,提供丰富的UI组件和强大的数据处理能力。 - **获取途径**:访问官方网站`...
要开始使用ExtJS,首先需要获取其库文件。通常,开发者可以通过访问官方网址`http://extjs.com/download`下载最新的ExtJS版本。安装完成后,开发者需要理解并熟悉其目录结构: 1. **adapter**:该目录包含了用于将...
1. **安装与设置**:如何下载并引入ExtJS库到项目中,配置基本的HTML和JavaScript环境。 2. **Hello World**:创建第一个ExtJS应用,展示基础组件如Panel的使用。 3. **组件基础**:讲解如何创建和使用不同类型的...
- **类的定义**: Extjs中的类继承于JavaScript原生类,通过Ext.extend来定义。这是Extjs实现面向对象编程的基础。 - **命名空间**: 命名空间在Extjs中用于组织和管理代码,避免变量和函数名的冲突。 #### 3. Extjs ...
这个压缩包中的"test"文件可能是一个测试目录或文件,通常包含HTML、CSS、JavaScript文件以及必要的图片和JSON数据文件,用于演示如何配置和使用ExtJS Tree控件。开发者可以通过查看这些文件来学习如何设置异步加载...
在ExtJS 4中,STOREMENU 是一种特定的功能,它将数据存储(Store)与菜单(Menu)相结合,提供了一种动态创建菜单项的方法,这些菜单项可以根据存储的数据进行更新。这种功能在需要根据用户权限或实时数据动态展示...
- 在 MyEclipse 中新建一个 Web 项目,命名为 `Extjs4`。 - 将解压缩后的 Extjs4.0 文件复制到项目的 `Webroot` 目录下。 - `Examples` 文件夹包含官方提供的示例代码,可作为学习参考。 - 部署并启动 Tomcat。 ...
如果需要从服务器动态获取HTML内容,可以使用`Ajax`请求,并在成功回调中更新panel的`html`属性。 ```javascript Ext.Ajax.request({ url: 'your_server_url', // 服务器URL success: function(response) { ...
- **更多Widgets**:ExtJS还提供了许多其他类型的组件,如按钮、面板、标签页等。 #### 7. 使用Ajax - **异步通信**:ExtJS支持通过Ajax进行前后端的异步数据交换。 - **支持多种后端**:不仅支持PHP,还支持ASP...
首先,要开始EXTJS4的学习,你需要获取EXTJS库。EXTJS的官方下载地址是http://extjs.org.cn/。下载后,将其解压缩,并将文件放入你的Web项目目录。例如,在使用MyEclipse和Tomcat的情况下,你可以创建一个新的Web...
- **Ext.application**:这是EXTJS4中的主入口点,用于初始化应用程序。在上面的HelloWorld示例中,它创建了一个名为'HelloExt'的应用,并定义了一个启动函数launch。 5. **元素获取** - **Ext.get**:EXTJS 提供...
- 在MyEclipse中新建一个Web项目,例如命名为 `Extjs4`。 - 将解压后的Extjs4.0文件夹中的所有文件复制到该项目的Webroot目录下。 3. **配置示例程序**: - `Examples` 文件夹包含了官方提供的示例程序,可以用于...
在ExtJS中,这个常量可能在以下几种场景中使用: 1. **图标渲染**:当一个组件(如按钮或菜单项)需要图标,但实际图标资源未能正确加载时,这个透明图片会显示,避免了空白或异常。 2. **延迟加载**:在某些动态...
在开发过程中,有时需要根据数据库结构或者业务需求自动生成相应的ExtJS代码,以提高开发效率和代码一致性。下面将详细解释如何使用ExtJS进行代码自动生成,以及各组件类型的中文解释。 1. **数据库字段的映射** ...
以上是 `Extjs` 中常用的表单类及其属性和方法的详细介绍,这些类和方法提供了丰富的功能,帮助开发者快速构建功能完备的 Web 表单应用。通过掌握这些基础知识,可以有效地提高开发效率并确保应用程序的质量。