javascript post数据到WCF反馈json或者XML

前端代码:

<script language="javascript" type="text/javascript">
//创建XMLHTTP
function createXMLHTTP(){
var httpRequest;
     try {
        httpRequest = new XMLHttpRequest();
     }
     catch (e) {
         try {
             httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
         }
         catch (e) {
            try {
                httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
             }
            catch (e) {
                return null;
            }
        }
    }
    return httpRequest;
}
//构造XML格式的文本
function createXML(){
  var id = document.getElementById("id").value;  
  var title = document.getElementById("title").value;
  var content = document.getElementById("content").value;
  var xml = '<?xml version="1.0" encoding="utf-8" ?>';
  xml+='<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">';
  xml+='<soap:Body>';
  xml+='<XmlService xmlns="http://tempUri.org/">';
  //var xml = '';
  xml+='<id type="number">'+id+'</id>';
  xml+='<mytitle type="string">'+title+'</mytitle>';
  xml+='<mycontent type="string">'+content+'</mycontent>';
  xml+='</XmlService></soap:Body></soap:Envelope>';
  return xml;
}
//构造JSON字符串
function createJSON(){
  var id = document.getElementById("id").value;  
  var title = document.getElementById("title").value;
  var content = document.getElementById("content").value;
  var json = '{"id":'+id+',"mytitle":"'+title+'","mycontent":"'+content+'"}';
  return json;
}
//异步调用服务器
function callServer(postType) { 
var xmlHttp =createXMLHTTP();
if (xmlHttp == null) {alert('浏览器不支持ajax');return;}
xmlHttp.onreadystatechange = function(){
 if (xmlHttp.readyState == 4) {callBack(xmlHttp.responseText)}
}
var body;
var contentType;
var url;
if(postType == 'json'){
    body = createJSON();
    contentType = "application/json";
    url = "/JsonXmlService.svc/JsonService";
}
if(postType == 'xml'){
    body = createXML();
    contentType = "text/xml";
    url = "/JsonXmlService.svc/XmlService";
}
xmlHttp.open("POST", url, true);
xmlHttp.setRequestHeader("Content-type", contentType);
xmlHttp.send(body);
}
//回调事件
function callBack(responseText){
alert(responseText);
}
</script>

前端还有几个HTML控件

<div>
    文章标题:<input type="text" id="title" /><br />
    文章内容:<textarea rows="" cols="" id="content"></textarea>
    <input type="hidden" id="id" value="1" /><br />
    <input type="button"  value="以JSON方式提交" onclick="callServer('json');" />
    <input type="button"  value="以XML方式提交" onclick="callServer('xml');" />
    </div>

后端代码

using System;
using System.Text;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Activation;
using System.ServiceModel.Web;
using System.ServiceModel.Channels;
using System.Xml.Serialization;
using System.Xml;
using System.IO;
namespace JsonXmlWcf
{
    [ServiceContract(Namespace = "")]
    public interface IJsonXmlService
    {
        [OperationContract]
        [WebInvoke(ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)]
        MyDataType JsonService(int id, string mytitle, string mycontent);
        [OperationContract(Action="*")]
        [WebInvoke(ResponseFormat = WebMessageFormat.Xml, RequestFormat=WebMessageFormat.Xml, BodyStyle = WebMessageBodyStyle.WrappedRequest)]
        Message XmlService(Message m);
    }
    public class JsonXmlService:IJsonXmlService
    {
        public MyDataType JsonService(int id,string mytitle,string mycontent)
        {
            return MyService(id, mytitle, mycontent, "以JSON形式传递");
        }
        public Message XmlService(Message m)
        {
            return m;
        }
        private MyDataType MyService(int id,string mytitle,string mycontent,string info)
        {
            MyDataType MyData = new MyDataType();
            MyData.Id = id;
            MyData.MyTitle = string.Format("{0}({1})", mytitle,info);
            MyData.MyContent = mycontent;
            return MyData;
        }
    }
    [DataContract]
    public class MyDataType
    {
        private int _id;
        private string _mytitle;
        private string _content;
        [DataMember]
        public int Id
        {
            get { return _id; }
            set { _id = value; }
        }
        [DataMember]
        public string MyTitle
        {
            get { return _mytitle; }
            set { _mytitle = value; }
        }
        [DataMember]
        public string MyContent
        {
            get { return _content; }
            set { _content = value; }
        }
    }

}

遗留问题

messagecontract
WCF是怎么序列化,反序列化消息的

一切消息的基类Message的成员

总结:这样搞WCF不是方法,应该系统的学医下

代码:http://files.cnblogs.com/liulun/JsonXmlWcf.rar

时间: 2024-09-20 09:12:16

javascript post数据到WCF反馈json或者XML的相关文章

ios-IOS里json数据中有一段JavaScript的数据,怎么把这部分显示到UI上?

问题描述 IOS里json数据中有一段JavaScript的数据,怎么把这部分显示到UI上? <span style=""font-size:18px;color:#666666;"">有人说:女生,都该拥有一双好鞋,因为它会带你走向美好的未来』,还有人说:『女生,也该拥有一盒咖啡眼影,因为它会为你带来前所未有的美眼』.虽然是每季都会出现的实用咖啡色,但今年秋冬更进化为带点轻熟感的优雅可可色,眼睛变大了,气质指数还能瞬间攀升,一举数得!</span

silverlight动态读取txt文件/解析json数据/调用wcf示例

终于开始正式学习silverlight,虽然有点晚,但总算开始了,今天看了一下sdk,主要是想看下silverlight中如何动态调用数据,对于数据库的访问,sdk中的官方示例多用的是Ado.Net数据服务,方便到是方便,就是感觉Ado.Net数据服务返回的xml太啰嗦了,一点也不精简,数据通讯量太大(N多无用的标签导致客户端与服务端之间传输数据增加了不少),于是想到能否直接用wcf返回json格式, 何况sdk中提到silverlight中System.Json已经完成了对json的解析 经实

Ajax与Wcf交互-JSON

在WCF的序列化中有DataContractJsonSerializer的格式化器,这就使得WCF相比传统的Xml Web Serice多了一种输入输出的编码格式:JSON.本文将介绍如何使用JSON实现Ajax与WCF之间的数据交互. JSON的全称是JavaScript Object Notation,是专门用于适应Ajax和Restful而出现的取代xml的编码格式.相比xml而言,它更适合javascript, 第一步: 在VS2008中创建一个.Net framework 3.5的网站

jQuery form插件的使用之处理server返回的JSON, XML,HTML数据_jquery

废话不多说了,直接给大家贴代码了,具体代码如下所示: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>jQuery form插件的使用--处理server返回的JSON, XML,HTML数据</title> <meta http-equiv="Content-Type" cont

Ajax如何传输Json和xml数据_AJAX相关

ajax传输xml数据:只要把数据封装成xml格式就可以实现传输,前台js用responseXML接收xml参数,后台读取用流和dom4j来解析 前台页面 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix=&q

《项目经验》--通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中

问题描述 此帖子内容是我做项目时用到,自己琢磨出来的,可能还有很多纰漏之处,在此分享!互相交流,互相学习,有不对的地方,欢迎大家指正!具体内容见博客<<项目经验>--通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中>:http://blog.csdn.net/mazhaojuan/article/details/8592015先看一下我要实现的功能界面:这个界面的功能在图中已有展现,课程分配(教师教授哪门课程)在之前的页

Ajax如何传输Json和xml数据

ajax传输xml数据:只要把数据封装成xml格式就可以实现传输,前台js用responseXML接收xml参数,后台读取用流和dom4j来解析 前台页面 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix=&q

实用Javascript 传值, 数据验证, 事件触发总结

javascript|数据 实用Javascript  传值, 数据验证, 事件触发总结 1. 和JSP传值问题: 1)普通提交form 的数据验证传值 html页面输入: <form name ="form1"> <input-..> </form> Javascript 获得值并处理: <script language="javascript "> function checkForm1(text1) { if(t

JavaScript根据数据生成百分比图和柱状图的实例代码

这篇文章介绍了JavaScript根据数据生成百分比图和柱状图的实例代码,有需要的朋友可以参考一下   复制代码 代码如下: <HTML> <head> <title>JS百分比图和柱状图</title>   <xml:namespace prefix="v"/>   <style>    v:* {behavior=url(#default#VML)}   </style>   <style&g