日期:2014-05-16  浏览次数:20493 次

Extjs数据提交方式--单独Ajax提交

1、一般分为“form的submit提交”、“单独Ajax提交”

?

formname.form.submit({
    url : '',
    method : 'POST',
    waitMsg:'正在保存数据,请等待...',                
	success : function(form, action) {
    },
    failure : function(form, action) {
    }
});

Ext.Ajax.request({
    url : '',
    method : 'POST',
    success : function(result, request) {
    },
    failure : function(form, action) {
    }
});

?

2、相关问题及解决方法

(1)问题点:?单独Ajax提交方式,只要能够提交到后台不管数据能否正确执行就回调success函数,如果网络有故障,或者页面有错误数据到不了后台,就执行failure函数。而我们一般要求是:数据处理成功后显示成功信息,失败后显示失败信息。

?

如:后台返回结果:

{success:true}
{success:false,errors:connect}

?

?

(2)解决:在js页面中的success函数中取得返回值,我们对返回值进行判断,如果success是true我门就打印成功信息,如果success是false我们就打印失败的提示。

?

(3)从后台取得返回值:var responseArray = Ext.util.JSON.decode(response.responseText);

?

说明:Ext.util.JSON.decode()功能是将json字符串转成对象。相反的还有encode是将对象转成json字符串。

?

(4)代码示例

handler: function() {
Ext.Msg.wait('处理中,请稍后...', '提示'); //进度条等待
Ext.Ajax.request({
	async : false,//同步
	url: 'upload/test.do',
	success:function(response, options){
		//隐藏进度条
		Ext.Msg.hide();
		//将json数据字符串转变为对象
		var responseArray = Ext.util.JSON.decode(response.responseText);
		//成功
		if(responseArray.success==true){
			Ext.example.msg('成功', '           上传成功                    ');
		}else{
			//失败的几种返回情况
			if(responseArray.errors == 'connect')
				Ext.MessageBox.show({title: '失败',msg: '连接中心服务器失败,请检查网络配置!',buttons: Ext.MessageBox.OK,icon: Ext.MessageBox.ERROR});
			else if(responseArray.errors == 'server')
				Ext.MessageBox.show({title: '失败',msg: '服务器错误,上传失败!',buttons: Ext.MessageBox.OK,icon: Ext.MessageBox.ERROR});
			else
				Ext.MessageBox.show({title: '失败',msg: '上传失败',buttons: Ext.MessageBox.OK,icon: Ext.MessageBox.ERROR});
		}
	},
	failure:function(response,options){
		Ext.Msg.hide();
		Ext.MessageBox.show({title: '失败',msg: '上传失败',buttons: Ext.MessageBox.OK,icon: Ext.MessageBox.ERROR});
	}
});
}

?

?

?