前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >javascript post数据到WCF反馈json或者XML

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

作者头像
liulun
发布2022-05-09 10:54:02
5570
发布2022-05-09 10:54:02
举报
文章被收录于专栏:liulunliulun

前端代码:

代码语言:javascript
复制
<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控件

代码语言:javascript
复制
<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>

后端代码

代码语言:javascript
复制
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不是方法,应该系统的学医下

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2009-04-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档