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

简介: 前端代码: //创建XMLHTTPfunction createXMLHTTP(){var httpRequest;     try {        httpRequest = new XMLHttpRequest();     }     catch (e) {         try { ...

前端代码:

< 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不是方法,应该系统的学医下
目录
相关文章
|
3月前
|
JSON API 数据格式
淘宝拍立淘按图搜索API系列,json数据返回
淘宝拍立淘按图搜索API系列通过图像识别技术实现商品搜索功能,调用后返回的JSON数据包含商品标题、图片链接、价格、销量、相似度评分等核心字段,支持分页和详细商品信息展示。以下是该API接口返回的JSON数据示例及详细解析:
|
3月前
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南
|
3月前
|
JSON API 数据安全/隐私保护
Python采集淘宝拍立淘按图搜索API接口及JSON数据返回全流程指南
通过以上流程,可实现淘宝拍立淘按图搜索的完整调用链路,并获取结构化的JSON商品数据,支撑电商比价、智能推荐等业务场景。
|
4月前
|
JSON 缓存 自然语言处理
多语言实时数据微店商品详情API:技术实现与JSON数据解析指南
通过以上技术实现与解析指南,开发者可高效构建支持多语言的实时商品详情系统,满足全球化电商场景需求。
|
3月前
|
JSON 中间件 Java
【GoGin】(3)Gin的数据渲染和中间件的使用:数据渲染、返回JSON、浅.JSON()源码、中间件、Next()方法
我们在正常注册中间件时,会打断原有的运行流程,但是你可以在中间件函数内部添加Next()方法,这样可以让原有的运行流程继续执行,当原有的运行流程结束后再回来执行中间件内部的内容。​ c.Writer.WriteHeaderNow()还会写入文本流中。可以看到使用next后,正常执行流程中并没有获得到中间件设置的值。接口还提供了一个可以修改ContentType的方法。判断了传入的状态码是否符合正确的状态码,并返回。在内部封装时,只是标注了不同的render类型。再看一下其他返回的类型;
197 3
|
3月前
|
JSON Java Go
【GoGin】(2)数据解析和绑定:结构体分析,包括JSON解析、form解析、URL解析,区分绑定的Bind方法
bind或bindXXX函数(后文中我们统一都叫bind函数)的作用就是将,以方便后续业务逻辑的处理。
294 3
|
4月前
|
JSON API 数据安全/隐私保护
Python采集淘宝评论API接口及JSON数据返回全流程指南
Python采集淘宝评论API接口及JSON数据返回全流程指南
|
4月前
|
JSON 自然语言处理 监控
淘宝关键词搜索与商品详情API接口(JSON数据返回)
通过商品ID(num_iid)获取商品全量信息,包括SKU规格、库存、促销活动、卖家信息、详情页HTML等。
|
4月前
|
JSON 自然语言处理 API
多语言实时数据淘宝商品评论API:技术实现与JSON数据解析指南
淘宝商品评论多语言实时采集需结合官方API与后处理技术实现。建议优先通过地域站点适配获取本地化评论,辅以机器翻译完成多语言转换。在合规前提下,企业可构建多语言评论数据库,支撑全球化市场分析与产品优化。
|
4月前
|
机器学习/深度学习 JSON API
干货,淘宝拍立淘按图搜索,淘宝API(json数据返回)
淘宝拍立淘按图搜索API接口基于深度学习与计算机视觉技术,通过解析用户上传的商品图片,在淘宝商品库中实现毫秒级相似商品匹配,并以JSON格式返回商品标题、图片链接、价格、销量、相似度评分等详细信息。