使用vs2010+WCF发布json数据,ExtJS4.0进行调用

花了近一天的时间调试解决,希望对有相同需要的朋友有帮助:

1、新建一空网站,添加一个web页面webform1.aspx,添加ExtJs相关引用

<link href="ExtJs4.0.7/resources/css/ext-all.css" rel="stylesheet" type="text/css" />
    <script src="ExtJs4.0.7/bootstrap.js" type="text/javascript"></script>

2、添加一个启用AJAX的WCF服务Service1.svc,如下图:

3、修改web.config文件,将<enableWebScript />注释掉,换成<webHttp />,这一步很关键,

 

<system.serviceModel>
    <behaviors>
      <endpointBehaviors>
        <behavior name="WcfAjaxDemo.Service1AspNetAjaxBehavior">
          <!--<enableWebScript />-->
          <webHttp />
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"
      multipleSiteBindingsEnabled
="true" />
    <services>
      <service name="WcfAjaxDemo.Service1">
        <endpoint address="" behaviorConfiguration="WcfAjaxDemo.Service1AspNetAjaxBehavior"
          binding
="webHttpBinding" contract="WcfAjaxDemo.Service1" />
      </service>
    </services>
  </system.serviceModel>

4、WCF中的方法前加上

[WebGet(RequestFormat = WebMessageFormat.Xml, ResponseFormat = WebMessageFormat.Json)],这一步也很关键,如下:

[DataContract]
    public class treenode
    {
        [DataMember]
        public string id;
        [DataMember]
        public string text;
        [DataMember]
        public List<treenode> children = new List<treenode>();
        [DataMember]
        public string cls;
        [DataMember]
        public bool leaf;
    }
    [ServiceContract(Namespace = "WcfAjaxDemo")]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public class Service1
    {
        // 要使用 HTTP GET,请添加 [WebGet] 特性。(默认 ResponseFormat 为 WebMessageFormat.Json)
       
// 要创建返回 XML 的操作,
       
//     请添加 [WebGet(ResponseFormat=WebMessageFormat.Xml)],
       
//     并在操作正文中包括以下行:
       
//         WebOperationContext.Current.OutgoingResponse.ContentType = "text/xml";
        [OperationContract]
        [WebGet(RequestFormat = WebMessageFormat.Xml, ResponseFormat = WebMessageFormat.Json)]
        public treenode[] GetTree()
        {
            // 在此处添加操作实现
            treenode t = new treenode();
            t.id = "noe1";
            t.text = "节点1";
            t.cls = "folder";
            treenode t0 = new treenode();
            t0.id = "noe1_0";
            t0.text = "节点1_0";
            t0.cls = "folder";
            t0.leaf = true;
            t.children.Add(t0);
            treenode t1 = new treenode();
            t1.cls = "folder";
            t1.id = "000";
            t1.text = "节点1";
            treenode t2 = new treenode();
            t2.id = "noe1_1";
            t2.text = "节点1_1";
            t2.cls = "folder";
            t2.leaf = true;
            t1.children.Add(t2);
            List<treenode> nodes = new List<treenode>();
            nodes.Add(t);
            nodes.Add(t1);
            return nodes.ToArray();
        }
        // 在此处添加更多操作并使用 [OperationContract] 标记它们
    }

在IE地址栏里输入http://localhost:18564/Service1.svc/GetTree,测试WCF是否正常,正常会提示文件下载,用记事本打开后显示如下:

[{"children":[{"children":[],"cls":"folder","id":"noe1_0","leaf":true,"text":"节点1_0"}],"cls":"folder","id":"noe1","leaf":false,"text":"节点1"},{"children":[{"children":[],"cls":"folder","id":"noe1_1","leaf":true,"text":"节点1_1"}],"cls":"folder","id":"000","leaf":false,"text":"节点1"}]

如果不正常会出现如下提示,请检查第3、4步

5、客户端使用ExtJs调用生成树TreePanel

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WcfAjaxDemo.WebForm1" %>

<!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 runat="server">
    <title></title>
    <link href="ExtJs4.0.7/resources/css/ext-all.css" rel="stylesheet" type="text/css" />
    <script src="ExtJs4.0.7/bootstrap.js" type="text/javascript"></script>
    <script type="text/jscript">
        Ext.require([
'*']);

        Ext.onReady(
function () {
           
var store = Ext.create('Ext.data.TreeStore', {
                proxy: {
                    type:
'ajax',
                    url:
'Service1.svc/GetTree'
                },
                root: {
                    text:
'Ext JS',
                    id:
'src',
                    expanded:
true
                },
                folderSort:
true,
                sorters: [{
                    property:
'text',
                    direction:
'ASC'
                }]
            });

           
var tree = Ext.create('Ext.tree.Panel', {
                id:
'tree',
                store: store,
                width:
250,
                height:
300,
                viewConfig: {
                    plugins: {
                        ptype:
'treeviewdragdrop',
                        appendOnly:
true
                    }
                },
                renderTo: document.body
            });
        });
   
</script>
</head>
<body>
    <form id="form1" runat="server">
    </form>
</body>
</html>

6、运行webform1.aspx如下图:

转载于:https://www.cnblogs.com/suncarry/archive/2012/02/02/2335983.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/422586.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql的 怎么处理_本人的MySQL连接到底怎么处理才好……

RT&#xff0c;代码本人直接贴了……using MySql.Data.MySqlClient;namespace WindowsFormsApplication1{public class ClassConnect{MySqlConnectionStringBuilder cs new MySqlConnectionStringBuilder();cs.Server “127.0.0.1”;cs.Port 3306;cs.Database “user_syste…

js解密

js解密http://www.cfansblog.com/tools/jsEncode.html转载于:https://www.cnblogs.com/skillCoding/archive/2012/02/03/2336700.html

java qq通信_结对博客(Java通信项目QQ)

项目名称&#xff1a;JAVA通信项目——QQ成员&#xff1a;邢正&#xff0c;郑振兰项目需求&#xff1a;QQ每个人都用过&#xff0c;它的意义就不再讲了。之所以选择做QQ事因为它有挑战性&#xff0c;涉及到通信、传输、swing等各种知识。(好吧我不装逼了&#xff0c;说的直白点…

类的序列化[Serializable]

简介序列化是指将对象实例的状态存储到存储媒体的过程。在此过程中&#xff0c;先将对象的公共字段和私有字段以及类的名称&#xff08;包括类所在的程序集&#xff09;转换为字节流&#xff0c;然后再把字节流写入数据流。在随后对对象进行反序列化时&#xff0c;将创建出与原…

java深度克隆大数据_Java - 深拷贝技巧

先让我描述一下问题&#xff1a;我在某Action(struts2.x)-A中写了一个功能P,以当前用户的某个标识F 1时需要走这个功能,而且这个功能因某些原因已经侵入到了其他一些method中。顺便一提,A中获得当前用户session的method已经被父类封装好了。然后我的代码已经push上去了,第二天…

Android中的Handler, Looper, MessageQueue和Thread

前几天&#xff0c;和同事探讨了一下Android中的消息机制&#xff0c;探究了消息的发送和接收过程以及与线程之间的关系。虽然我们经常使用这些基础的东西&#xff0c;但对于其内部原理的了解&#xff0c;能使我们更加容易、合理地架构系统&#xff0c;并避免一些低级错误。 对…

java平面_java知识点整理

一、http和tcp/ip的区别&#xff1f;http是应用层协议&#xff0c;主要解决如何封装数据。tcp/ip则是传输层协议&#xff0c;主要解决数据如何在网络中传递。web应用使用http协议作为应用层协议来封装成http文本协议&#xff0c;然后使用tcp/ip做传输层协议将信息发布到网络上。…

设计模式—适配器模式

一、概念 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。——Gang of Four Adapter模式的宗旨&#xff1a;保留现有类所提供的服务&#xff0c;向客户提供接口&#xff0c;以满足客户的期望。 对象适配…

android UI进阶之实现listview的分页加载

上篇博文和大家分享了下拉刷新&#xff0c;这是一个用户体验非常好的操作方式。新浪微薄就是使用这种方式的典型。 还有个问题&#xff0c;当用户从网络上读取微薄的时候&#xff0c;如果一下子全部加载用户未读的微薄这将耗费比较长的时间&#xff0c;造成不好的用户体验&…

java stringutils_Java 笔记----- StringUtils 拼接字符

import org.apache.commons.lang3.StringUtils;StringUtils 提供了 join 方法用来 按照自定义的拼接符拼接join实现源码&#xff1a;感兴趣的可以看看public static String join(Iterator> iterator, String separator) {// handle null, zero and one elements before buil…

EJB分布式对象实现方式描述

在Java RMI中要求所有的参数传递和返回类型是JAVA的基本类型或实现Serilizable的对象。串行化对象通过值传递&#xff08;又名拷贝传递&#xff09;&#xff0c;而不是引用传递。这意味着在某一层中串行化对象的更新并不自动影响到其它的对象。 对于EJB对象而言&#xff0c;它由…

iis5.0+php5.0+mysql5.0配置完全手册_IIS5.0+PHP5.0+MySQL5.0配置完全手册

IIS5.0PHP5.0MySQL5.0配置完全手册环境:windows Xp sp2 IIS5.0 MySQL 5.0 PHP 5.0.4 使用PHPWind3.0论坛程序使用PHPmyadmin2.6.3适合初学者的配置1.首先是安装IIS5.0xp默认下是没有安装IIS的"控制面板"> "添加删除程序"> "添加\删除windows组件…

蓝桥杯java提交格式_2019第十届蓝桥杯JAVA省赛B组

B 不同子串题目描述一个字符串的非空子串是指字符串中长度至少为 1 的连续的一段字符组成 的串。例如&#xff0c;字符串aaab 有非空子串a, b, aa, ab, aaa, aab, aaab&#xff0c;一共 7 个。 注意在计算时&#xff0c;只算本质不同的串的个数。请问&#xff0c;字符串0100110…

浅析Java与C#的事件处理机制(转)

Java与C#的事件处理都是实现了事件源-事件响应者机制&#xff0c;但又不完全相同。Java实现的是一种事件源与事件响应者两级实体对象方式&#xff0c;这里的事件响应者也是事件监听者&#xff0c;而C#实现的是一种事件源-代理-事件响应者三级实体对象方式。下面就这两种方式来具…

java xml接口实例化_Spring简介及xml配置

Java Web发展史第一阶段:JavaBeanServletJsp逐步发展第二阶段:面对EJB重量级框架带来的种种麻烦第三阶段:SpringMVC/StrutsSpringHibernate/myBatis第四阶段:享受SpringBoot"约定大于配置"的种种乐趣&#xff0c;很多繁琐的配置都变成了约定第五阶段:以Dubbo为代表的…

员工薪酬管理设计方案

待遇管理模块目前我遇到的要分两种方案&#xff0c;第一种是集团版的(有子公司、区域公司)&#xff1b;第二种是标准版的(就是一个标准的公司&#xff0c;不存在什么子公司)&#xff0c;下面就谈谈标准版个人是如何处理的。 特别感谢&#xff1a;江琴童鞋、罗静童鞋两位财务人员…

文件上传简介1---上传到指定的目录

preparation 本节摘要&#xff1a;本节主要介绍上传文件到指定目录。 引入&#xff1a; 文件上传是开发中常用的功能&#xff0c;本节主要介绍用commons-fileupload-1.1.jar包实现基本的文件上传功能&#xff0c;即上传文件到指定的目录中&#xff0c;同时介绍上传过程中使用到…

null和undefined相等

<script language"javascript"><!-- var v0 1; // 定义一个值为1的变量 var v1 null; // 定义一个变量&#xff0c;并指定值为null var v2; // 定义一个变量…