本篇主要介绍一下ExtJs常用的几个对JS语法的扩展支持,包括Ajax封装,函数事件操作封装,还有扩展的常用函数等。Ajax服务端交互式操作是提交到.NET MVC。后续服务端交互都采用这一方式实现。
一、ExtJs中的Ajax:Ext.Ajax.request
通过客户端向服务端发送Ajax请求,可以“直接”调用MVC的action方法,并传递参数,action返回值可以是普通字符串,也可以是json对象。请求可以添加自定义头信息。看下面例子:
1.异步请求,发送自定义请求头:
html页面如下:
[html]
1
2
3
4
|
<
h1
>Ajax服务端请求</
>
div
class
=
"content"
id
"div1"
>
div
>一共发起了<
span
"span1"
style
"color:Red"
>0</
span
>次请求。</
>
</
>
|
Ext.onReady(
function
() {
new
Ext.Button({
renderTo:
"div1"
,
text:
"后台Ajax提交"
ottom:auto!important; float:none!important; height:auto!important; left:auto!important; line-height:2em!important; margin:0px!important; outline:0px!important; overflow:visible!important; padding:0px!important; position:static!important; right:auto!important; top:auto!important; vertical-align:baseline!important; width:auto!important; font-family:'Courier New',
handler:
() {
Ext.Ajax.request({
url:
'Ajax_Func1'
ottom:auto!important; float:none!important; height:auto!important; left:auto!important; line-height:2em!important; margin:0px!important; outline:0px!important; overflow:visible!important; padding:0px!important; position:static!important; right:auto!important; top:auto!important; vertical-align:baseline!important; width:auto!important; font-family:'Courier New',
headers: {
'userHeader'
:
'userMsg'
},
params: { a: 10,b: 20 },
method:
'GET'
ottom:auto!important; float:none!important; height:auto!important; left:auto!important; line-height:2em!important; margin:0px!important; outline:0px!important; overflow:visible!important; padding:0px!important; position:static!important; right:auto!important; top:auto!important; vertical-align:baseline!important; width:auto!important; font-family:'Courier New',
success:
(response,options) {
Ext.MessageBox.alert(
'成功'
ottom:auto!important; float:none!important; height:auto!important; left:auto!important; line-height:2em!important; margin:0px!important; outline:0px!important; overflow:visible!important; padding:0px!important; position:static!important; right:auto!important; top:auto!important; vertical-align:baseline!important; width:auto!important; font-family:'Courier New',
'从服务端获取结果: '
+ response.responseText);
failure:
ottom:auto!important; float:none!important; height:auto!important; left:auto!important; line-height:2em!important; margin:0px!important; outline:0px!important; overflow:visible!important; padding:0px!important; position:static!important; right:auto!important; top:auto!important; vertical-align:baseline!important; width:auto!important; font-family:'Courier New',options) {
'失败'
'请求超时或网络故障,错误编号:'
+ response.status);
}
});
ottom:auto!important; float:none!important; height:auto!important; left:auto!important; line-height:2em!important; margin:0px!important; outline:0px!important; overflow:visible!important; padding:0px!important; position:static!important; right:auto!important; top:auto!important; vertical-align:baseline!important; width:auto!important; font-family:'Courier New',
id:
"bt1"
});
});
|
@H_404_90@
public
ContentResult Ajax_Func1(
int
a,
b)
{
string
userHeaderMsg = Convert.ToString(Request.Headers[
"userHeader"
]);
return
Content((a + b).ToString() +
",userHeader:"
+ userHeaderMsg);
}
|
@H_404_90@
() {
Ext.Button({
"后台Ajax提交方式2返回JSON"
ottom:auto!important; float:none!important; height:auto!important; left:auto!important; line-height:2em!important; margin:0px!important; outline:0px!important; overflow:visible!important; padding:0px!important; position:static!important; right:auto!important; top:auto!important; vertical-align:baseline!important; width:auto!important; font-family:'Courier New',
() {
Ext.Ajax.request({
'Ajax_Func2'
ottom:auto!important; float:none!important; height:auto!important; left:auto!important; line-height:2em!important; margin:0px!important; outline:0px!important; overflow:visible!important; padding:0px!important; position:static!important; right:auto!important; top:auto!important; vertical-align:baseline!important; width:auto!important; font-family:'Courier New',
params: { n: 10 },
'POST'
callback:
(options,success,response) {
if
(success) {
var
responseJson = Ext.JSON.decode(response.responseText);
Ext.Msg.alert(
"成功"
ottom:auto!important; float:none!important; height:auto!important; left:auto!important; line-height:2em!important; margin:0px!important; outline:0px!important; overflow:visible!important; padding:0px!important; position:static!important; right:auto!important; top:auto!important; vertical-align:baseline!important; width:auto!important; font-family:'Courier New',options.params.n +
"的阶乘是:<font color='red'>"
+ responseJson.n1 +
"</font><br />"
}
else
{
Ext.Msg.confirm(
ottom:auto!important; float:none!important; height:auto!important; left:auto!important; line-height:2em!important; margin:0px!important; outline:0px!important; overflow:visible!important; padding:0px!important; position:static!important; right:auto!important; top:auto!important; vertical-align:baseline!important; width:auto!important; font-family:'Courier New',
错误编号:['
+ response.status +
']是否要重新发送?'
ottom:auto!important; float:none!important; height:auto!important; left:auto!important; line-height:2em!important; margin:0px!important; outline:0px!important; overflow:visible!important; padding:0px!important; position:static!important; right:auto!important; top:auto!important; vertical-align:baseline!important; width:auto!important; font-family:'Courier New',
(btn) {
(btn ==
'yes'
) {
Ext.Ajax.request(options);
}
});
}
}
});
}
});
});
|
@H_404_90@
JsonResult Ajax_Func2(
n)
n1 = 1;
n2 = 0;
for
(
i = 1; i <= n; i++)
{
n1 *= i;
n2 += i;
}
var data =
new
{
n1 = n1,
n2 = n2
};
Json(data,JsonRequestBehavior.AllowGet);
|
>Ajax文件上传</
"div2"
form
"form1"
请选择文本文件:<
input
type
"file"
name
"file"
/>
form
>
>
|
@H_404_90@
//文件上传
Ext.get(
"button1"
).on(
"click"
() {
Ext.Ajax.request({
"Ajax_FileUp"
isupload:
true
form:
"form1"
ottom:auto!important; float:none!important; height:auto!important; left:auto!important; line-height:2em!important; margin:0px!important; outline:0px!important; overflow:visible!important; padding:0px!important; position:static!important; right:auto!important; top:auto!important; vertical-align:baseline!important; width:auto!important; font-family:'Courier New',
(response) {
"上传成功,文本文件内容:"
ottom:auto!important; float:none!important; height:auto!important; left:auto!important; line-height:2em!important; margin:0px!important; outline:0px!important; overflow:visible!important; padding:0px!important; position:static!important; right:auto!important; top:auto!important; vertical-align:baseline!important; width:auto!important; font-family:'Courier New',response.responseText);
}
});
});
|
@H_404_90@
ContentResult Ajax_FileUp(HttpPostedFileBase file)
System.IO.StreamReader r =
new
System.IO.StreamReader(file.InputStream,System.Text.UTF8Encoding.Default);
var str = r.ReadToEnd();
Content(str);
|
ajaxCount = 0;
//每当Ajax请求发起时触发:
Ext.Ajax.on(
'beforerequest'
() { Ext.get(
"span1"
).update(++ajaxCount) },255)!important">this
);
|
@H_404_90@
).getUpdater().formUpdate(
);
|
@H_404_90@