详解Sencha Touch如何向服务器提交数据

移动开发
Sencha Touch如何向服务器提交数据是本文要介绍的内容,主要是来了解Sencha Touch是如何来发送数据的,具体内容来看本文详解。

Sencha Touch如何向服务器提交数据是本文要介绍的内容,主要是来了解Sencha Touch是如何来发送数据的。在坛子里看到一篇这样的文章,与朋友们分享一下,具体内容来看本文详解。

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

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

  1. viewplaincopytoclipboardprint?  
  2.  
  3. //提交数据  
  4.  
  5. varjData={'records':[{name:'myrecord'},{name:'anotherrecord'}]};  
  6.  
  7. Ext.Ajax.request({  
  8.  
  9. url:'http://124.16.139.80/sel_st/UpdateSympsServlet',  
  10.  
  11. //callback:function(){  
  12.  
  13. //console.log('Ext.Ajax.request');  
  14.  
  15. //},  
  16.  
  17. method:'POST',  
  18.  
  19. params:{  
  20.  
  21. records:'something'  
  22.  
  23. },  
  24.  
  25. jsonData:jData,  
  26.  
  27. success:function(response,opts){  
  28.  
  29. varobj=Ext.decode(response.responseText);  
  30.  
  31. console.dir(obj);  
  32.  
  33. },  
  34.  
  35. failure:function(response,opts){  
  36.  
  37. }  
  38.  
  39. });  
  40.  
  41. //提交数据varjData={'records':[{name:'myrecord'},{name:'anotherrecord'}]};  
  42. Ext.Ajax.request(  
  43. {url:'http://124.16.139.80/sel_st/UpdateSympsServlet',  
  44. //callback:function(){//console.log('Ext.Ajax.request');//  
  45. },  
  46. ethod:'POST',params:{records:'something'},  
  47. jsonData:jData,success:function(response,opts){varobj=Ext.decode(response.responseText  
  48. );console.dir(obj);  
  49. },failure:function(response,opts){}  
  50. }  
  51. ); 

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

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

圈3callback:function()如果不注释掉,不论成败都会被执行。

接下来重要的是,服务器端java代码怎么获取和回馈数据:

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

 

  1. StringBufferjb=newStringBuffer();  
  2.  
  3. Stringline=null;  
  4.  
  5. try{  
  6.  
  7. BufferedReaderreader=req.getReader();  
  8.  
  9. while((line=reader.readLine())!=null)  
  10.  
  11. jb.append(line);  
  12.  
  13. }catch(Exceptione){  
  14.  
  15. }  
  16.  
  17. System.out.println("req.getReader()"+newString(jb));  
  18.  
  19. StringBufferjb=newStringBuffer();  
  20. Stringline=null;try{  
  21.  BufferedReaderreader=req.getReader();  
  22. while((line=reader.readLine()  
  23. )!=null  
  24. )  
  25. jb.append(line);  
  26. }  
  27. catch(Exceptione){}System.out.println("req.getReader()"+newString(jb)); 

控制台输出了:

  1. 信息:Reloadingcontext[/sel_st]  
  2.  
  3. req.getReader(){"records":[{"name":"myrecord"},{"name":"anotherrecord"}]} 

嘿嘿,获取到了。

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

  1. [{"id":100,"sympname":"新症状1","belongs":"alternative"},{"id":101,"sympname":"新症状2","belongs":"alternative"}] 

那么上面写的varobj=Ext.decode(response.responseText);console.dir(obj);这两行代码会work,控制台里输出了:

  1. Array[2]  
  2. 0:Objectbelongs:"alternative"  
  3. id:100  
  4. sympname:"新症状1"  
  5. __proto__:Object1:Objectlength:2  
  6. __proto__:Array[0] 

嘿嘿,反馈成功,以上。

小结:解析Sencha Touch向服务器提交数据的内容介绍完了,希望通过本文的学习能对你有所帮助!

责任编辑:zhaolei 来源: 互联网
相关推荐

2011-11-28 13:42:55

Sencha Touc组件选择器

2011-09-02 15:18:49

Sencha Touc

2011-10-26 10:32:05

Sencha Touc数据视图

2011-07-26 09:41:50

Sencha Touc特性HTML 5

2010-11-22 10:31:17

Sencha touc

2011-07-25 15:55:21

Sencha ToucHtml 5

2011-10-26 10:21:40

Sencha Touc组件

2011-09-05 10:20:21

Sencha ToucAPP

2011-10-26 10:43:19

Sencha Touc

2012-05-01 20:57:26

Sencha Touc

2011-07-26 09:46:53

Sencha Touc

2011-07-25 16:21:22

Sencha touc

2011-09-02 16:21:08

Sencha Touc自动生成工具

2011-07-25 16:41:16

Sencha Touc

2011-09-05 10:39:03

Sencha Touc离线存储数据库

2023-03-13 10:25:53

2009-02-27 13:35:00

打印服务器打印共享

2011-09-05 14:09:06

Sencha Touc函数

2011-09-05 13:53:08

Sencha Touc列表

2010-08-30 13:46:09

MeeGoMeeGo Touch
点赞
收藏

51CTO技术栈公众号