sencha touch 向服务器提交数据

本文介绍了如何在Sencha Touch中实现用户通过拖拽矩形控件到指定区域,并向服务器提交数据的操作。重点讲解了如何通过Ext.Ajax.request方法实现数据的异步提交,并在服务器端如何接收和处理这些数据。
 sencha touch 向服务器提交数据

我想要实现这样的效果:让用户自由拖拽一些draggable的矩形控件,当拖拽进某个droppable区域放下时,客户端要把当前各个droppable区域里都有哪些矩形控件了告诉服务器,服务器根据提交的数据,会传来一些新的draggable矩形控件,供继续拖拽,所以需要向服务器提交数组形式的数据,用a.jsp?id=101这种恐怕不合适,也不想用Ext.util.JSONP.request,于是打算用Ext.Ajax.request,拟把数组形式的数据转化为json格式。

怎么办,上代码(参考sench touch api 关于Ext.Ajax的内容):

//提交数据
	var jData = {'records': [{name: 'my record'}, {name: 'another record'}]};
	Ext.Ajax.request({
			url: 'http://124.16.139.80/sel_st/UpdateSympsServlet',
//			callback:function(){
//				console.log('Ext.Ajax.request');
//			},
			method : 'POST' ,
			params:{
				records:'something'
				},
			jsonData: jData,
			success: function(response, opts) {
			         var obj = Ext.decode(response.responseText);
					 console.dir(obj);
					},
				failure: function(response, opts) {
				}
			});

要注意的几个问题: ①使用了jsonData成员后,params的内容将被忽略;

 ②用jsonData,那么就得method : 'POST' ,注意全大写,不要写成post ,Post ,pOst等奇怪的样子;

 圈3 callback:function()如果不注释掉,不论成败都会被执行。
接下来重要的是,服务器端java代码怎么获取和回馈数据:

        如果是params:{}里面的数据,用request.getParameter("id")就行了,但取jsonData:{}里面的不行,需要用request.getReader() 代码如下:

		StringBuffer jb = new StringBuffer();
		String line = null; 
		try {
			BufferedReader reader = req.getReader();
			while ((line = reader.readLine()) != null)
				jb.append(line);
		} catch (Exception e) {   
		
		}		 
		System.out.println ("req.getReader() "+new String(jb));

控制台输出了 :

信息: Reloading context [/sel_st]
req.getReader() {"records":[{"name":"my record"},{"name":"another record"}]}

嘿嘿,获取到了。

服务器端经过处理(暂时没处理,返回的是无关的测试数据),返回数据如下:

[{"id":100 ,"sympname": "新症状1" , "belongs": "alternative" },{"id":101 ,"sympname": "新症状2" , "belongs": "alternative" }]
那么上面写的 var obj = Ext.decode(response.responseText);  console.dir(obj);这两行代码会work,控制台里输出了:

Array[2]
  1. 0Object
    1. belongs"alternative"
    2. id100
    3. sympname"新症状1"
    4. __proto__Object
  2. 1Object
  3. length2
  4. __proto__Array[0]

嘿嘿,反馈成功,以上。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值