ExtJs学习笔记(20)-利用ExtJs的Ajax与服务端WCF交互

ExtJs是一套非常不错的javascript UI库(第一次接触ExtJs的,可到官方网站http://www.extjs.com/deploy/dev/examples/samples.html看下示例。相信不少人会心动的),不仅组件丰富,效果漂亮,而且ExtJs集成的Ajax功能可以方便的与.Net的WCF进行交互.

这里我们将演示ExtJs的FormPanel从WCF加载数据,以及如何提交数据到WCF服务端

1.首先来定义一个用于传输信息的Class(实际开发中,可以是Linq to Sql的Class或任何可序列化的实体类)

[DataContract]
  public class MyData
  {
    [DataMember]
    public string id;
    [DataMember]
    public string text;
  }

非常简单,MyData中仅定义了二个成员id,text,加上[DataContract]与[DataMember]表明该类可以序列化

2.再定义几个用于跟ExtJs交互的方法(初次接触Ajax与WCF交互的同志,建议参考一下老张的"Ajax与WCF交互-WCF之美(http://www.cnblogs.com/jillzhang/archive/2008/06/13/1219201.html)")

[ServiceContract(Namespace = "")]
  [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
  public class MyService
  {
  [OperationContract]
    [WebInvoke(ResponseFormat = WebMessageFormat.Json, Method = "*", UriTemplate = "GetMyData")]
    public MyData GetMyData()
    {
      System.Threading.Thread.Sleep(1000);
      MyData _Node = new MyData() { id = "1", text = "test text" };
      return _Node;
    }

   /**//// <summary>
    /// RESTFul WCF用于Get方式取得ExtJs提交的数据(Json)
    /// </summary>
    /// <param name="id"></param>
    /// <param name="text"></param>
    /// <returns></returns>
    [OperationContract]
    [WebInvoke(Method = "*", ResponseFormat = WebMessageFormat.Json, UriTemplate = "SaveMyData?id={id}&text={text}")]
    public MyData SaveMyData(string id,string text)
    {
      System.Threading.Thread.Sleep(1000);
      MyData _Node = new MyData() { id = id, text = text };
      return _Node;
    }

/**//// <summary>
    /// Post方法处理ExtJs提交的数据(Json格式)
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [OperationContract]
    [WebInvoke(Method = "*", ResponseFormat = WebMessageFormat.Json, UriTemplate = "SaveMyData2")]
    public MyData SaveMyData2(Stream input)
    {
      string s = "";
      using (StreamReader sr = new StreamReader(input))
      {
        s = sr.ReadToEnd();
      }
      NameValueCollection qs = HttpUtility.ParseQueryString(s);
      string id = qs["id"];
      string text = qs["text"];

      System.Threading.Thread.Sleep(1000);
      MyData _Node = new MyData() { id = id, text = text };
      return _Node;
    }
}

时间: 2024-08-03 08:38:19

ExtJs学习笔记(20)-利用ExtJs的Ajax与服务端WCF交互的相关文章

Extjs学习笔记之一 初识Extjs之MessageBox_extjs

在其中新建一个my目录,以后所有的样例文件都新建在这个目录中.1.Hello world! 先看一个Extjs版的Hello World网页的全部代码: 复制代码 代码如下: <html> <head> <title>Extjs MessageBox</title> <link rel="Stylesheet" type="text/css" href="../resources/css/ext-all

ExtJs学习笔记

ExtJS学习笔记 - onReady Extjs学习笔记 - 实战 Extjs学习笔记 - 初篇 ExtJs学习笔记(24)-Drag/Drop拖动功能 ExtJs学习笔记(23)-ScriptTagProxy+XTemplate+WCF跨域取数据 ExtJs学习笔记(22)-XTemplate + WCF 打造无刷新数据分页 ExtJs学习笔记(21)-使用XTemplate结合WCF显示数据 ExtJs学习笔记(20)-利用ExtJs的Ajax与服务端WCF交互 ExtJs学习笔记(19)

ExtJs学习笔记(23)-ScriptTagProxy+XTemplate+WCF跨域取数据

ajax应用中跨域一直是一个非常麻烦的问题,目前也有一些解决办法,但要么比较麻烦,要么就不具备通用性,幸好ExtJs里的ScriptTagProxy提供了跨域读取数据的功能,而且在几大浏览器上都可以正常运行,但在使用过程中要注意几点: 1.服务端返回时,必须按以下格式返回: stcCallback1001({...}) 其中stcCallback1001中的1001是自动生成的,如果是分页提交的话,每再请求一次1001会变成1002,1003...类推 2.ExtJs官方的示例中虽然Script

本地html页面ajax与服务端进行数据交互的问题?

问题描述 本地html页面ajax与服务端进行数据交互的问题? 这个是本地ajax代码 $.ajax({ type:"post", url:"http://10.242.106.92:8080/Android_server/servlet", data:{name:username,password:userpassword}, cache:false, dataType:"json", success:function(data){ alert

ExtJs学习笔记(5)_Ajax示例

ExtJs对于Ajax的使用非常简单,看下面的代码: 1.Html页: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head &

ExtJs学习笔记(22)-XTemplate + WCF 打造无刷新数据分页

ExtJs的Grid组件虽然不管从哪一方面来讲,都称得上是很好很强大,但是总会有一些应用场景并不需要这么多功能,比如网站的留言列表,开发者只想要一个简单的<li>或<table>列表而已,这时候XTemplate就显得很有用了. 本文将讲解如何用XTemplate结合WCF与服务端交互,生成数据列表,同时加上无刷新分页功能(默认情况下ExtJs并没有为XTemplate并没有提供分页功能) 1.先做一些准备工作,写一个通用的类(改编自老张的PageData),用于WCF向ExtJs

API Demos 2.3 学习笔记 (20)-- Views-&amp;gt;Lists-&amp;gt;Array

更多精彩内容,请点击阅读:<API Demos 2.3 学习笔记> 从本节开始,我们开始接触List方面的内容.List部分的内容主要用到控件ListView.根据我的了解,我喜欢把ListView的应用框架分成三层来理解:数据,适配器,UI.其中,数据主要是一系列特定数据的集合,例如,一个字符串数组等:UI主要是ListView,或者包含ListView控件的ListActivity:适配器则有很多,例如:ArrayAdapter<T>, BaseAdapter, CursorA

AJAX从服务端获取数据的三种方法

本文为原创,如需转载,请注明作者和出处,谢谢!     在本文中将给出一个例子来介绍使用AJAX技术从服务端获得数据的三种方法.这个例子很简单,就是两个选择框(html中的<select>标签),通过选中第一个select的某一项后,会从服务端得到一些数据,并加载到第2个select中. 方法一.从服务端获得XML格式的数据 从服务端获得数据的最容易想到的方法就是在服务端反加一定格式的数据,一般是XML格式,然后在服务端使用XMLDocument或其他技术来读取这些数据,并生成<sele

ExtJs 学习笔记 Hello World!第1/2页_extjs

在了解基础后,可能会用Ext+ajax开发一个简单的小项目,会一点一滴的讲解项目开发过程,希望能给大家带来收获!因为我本人也在学习这个框架,所以对文章有什么建议请提出,这样可能会让我学到更多. 看到这幅图,你可能认为是某个软件,或者是Flash.Flex.silverlight等等,但这是javascript+Css实现的.       在看这样式与效果,如果加在自己的项目里,用户视觉与操作的体验应该会很爽吧. 还有更多的特效就不一一截图了.      下面开始说一下这个组件,ExtJs是一个不