javascript post数据到WCF反馈json或者XML
2009-04-06 13:26
309 查看
前端代码:
<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
<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
相关文章推荐
- golang接收post接收xml或者json数据
- golang接收post接收xml或者json数据
- Ajax与jQuery-利用$.get()和$.post()方法传递html,xml,json数据
- 关于原生JavaScript的http全部请求 post get json xml file 全了 拿去救急
- 【.net 深呼吸】聊聊WCF服务返回XML或JSON格式数据
- ASP.NET POST XML JSON数据,发送与接收
- [转]IE9.0或者360下js(JavaScript、jQuery)不能正确执行(加载),按F12后执行正常;Firefox下ajax的success返回数据data(json、string)无法获取
- EasyNet.Solr系列:处理xml或者json格式返回数据
- javascript解析ajax返回的xml和json格式数据实例详解
- [jQuery]从JSON或者XML获取数据
- $.post() $.get() $.getJSON() | XML数据的处理
- 一个好用的测试服务器接口的工具(post请求,xml,json等数据格式)
- IE9.0或者360下js(JavaScript、jQuery)不能正确执行(加载),按F12后执行正常;Firefox下ajax的success返回数据data(json、string)无法获取
- 程序调试时用到的XML或者JSON数据接口(支持返回图片信息)
- WCF服务返回XML或JSON格式数据
- java代码用于返回JSON或者XML数据(extJs)
- SpringMVC返回XML或者JSON格式的数据
- WCF服务返回XML或JSON格式数据
- ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml) 用javascript在客户端删除某一个cookie键值对 input点击链接另一个页面,各种操作。 C# 往线程里传参数的方法总结 TCP/IP 协议 用C#+Selenium+ChromeDriver 生成我的咕咚跑步路线地图 (转)值得学习百度开源70+项目
- JavaScript - XMLHttpRequest 应用示例(传输二进制数据、JSON 字符串,监测进度)