extjs如何实现页面值的传递和接受
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
extjs如何实现页面值的传递和接受
extjs怎么实现页面值的传递和接受
extjs传参和用什么语言做后台处理没关系,用以下方法传值过去,然后用相应语言接收参数的方法正常接收就行了,
1.ajax方法传值:
Ext.Ajax.request({
url:'DoAction.jsp method=add',
params:{UserName:'张三',Gender:'男'},//参数列表
callback:function(options,success,response){//回调函数
if(success){
alert(response.responseT ext);//返回数据
}
}
})
2.表单传值
定义一个Ext.form.FormPanel,(后台接收参数的名称是表单各元素的id)
var ItemForm = new Ext.form.FormPanel({.....})
然后用ItemForm.getForm().submit提交表单:
ItemForm.getForm().submit({
waitMsg:'正在保存数据,请稍候...',
waitTitle:'提示',
method:'POST',
url:'DataAction.jsp method=save',
params:{UserName:'张三',Gender:'男'},
success:function(form,action){
//do something here
},
failure:function(form,action){
Ext.Msg.alert('提示','保存失败。
');
}
})
------------------------------------------------------------忧伤的分割线----------------------------------
关于JavaScript中this的使用,这是一个由来已久的问题了。
我们这里就不介绍它的发展历史了,只结合具体的例子,告诉大家可能会遇到什么问题,在遇到这些问题时EXT是如何解决的。
在使用EXT 时,最常碰到的就是使用Ajax回调函数时出现的问题,如下面的代码所示。
现在的HTML 页面中有一个text输入框和一个按钮。
我们希望按下这个按钮之后,能用Ajax去后台读取数据,然后把后台响应的数据放到text中,实现过程如代码清单10-6所示。
代码清单10-6 Ajax中使用回调函数
function doSuccess(response) {
text.dom.value = response.responseT ext;
}
Ext.onReady(function(){
Ext.get('button').on('click', function(){
var text = Ext.get('text');
Ext.lib.Ajax.request(
'POST',
'08.txt',
{success:doSuccess},
'param=' + encodeURIComponent(text.dom.value)
);
});
});
在上面的代码中,Ajax已经用Ext.get('text')获得了text,以为后
面可以直接使用,没想到回调函数success不会按照你写的顺序去执行。
当然,也不会像你所想的那样使用局部变量text。
实际上,如果什么都不做,仅仅只是使用回调函数,你不得不再次使用Ext.get('text')重新获得元素,否则浏览器就会报text未定义的错误。
在此使用Ext.get('text')重新获取对象还比较简单,在有些情况下不容易获得需要处理的对象,我们要在发送Ajax请求之前获取回调函数中需要操作的对象,有两种方法可供选择:scope和createDelegate。
l 为Ajax设置scope。
function doSuccess(response) {
this.dom.value = response.responseT ext;
}
Ext.lib.Ajax.request(
'POST',
'08.txt',
{success:doSuccess,scope:text},
'param=' + encodeURIComponent(text.dom.value)
);
在Ajax的callback参数部分添加一个scope:text,把回调函数的scope指向text,它的作用就是把doSuccess函数里的this指向text 对象。
然后再把doSuccess里改成this.dom. value,这样就可以了。
如果想再次在回调函数里用某个对象,必须配上scope,这样就能在回调函数中使用this对它进行操作了。
l 为success添加createDelegate()。
function doSuccess(response) {
this.dom.value = response.responseT ext;
}
Ext.lib.Ajax.request(
'POST',
'08.txt',
{success:doSuccess.createDelegate(text)},
'param=' + encodeURIComponent(text.dom.value)
);
createDelegate只能在function上调用,它把函数里的this强行指向我们需要的对象,然后我们就可以在回调函数doSuccess里直接通过this来引用createDelegate()中指定的这个对象了。
它可以作为解决this问题的一个备选方案。
如果让我选择,我会尽量选择scope,因为createDelegate是要对原来的函数进行封装,重新生成function对象。
简单环境下,scope就够用了,倒是createDelegate还有其他功能,比如修改调用参数等。