您的位置:首页 > Web前端 > JQuery

WCF WebGet WebInvoke WCF Jquery 调用

2011-07-18 09:44 281 查看
1.创建WCF服务

直接在网站中添加 Ajax-enabled-WCF Services ,命名为AjaxWcfServices.svc

代码如下:

[ServiceContract(Namespace = "")]

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

public class HelloWorld

{

// 添加 [WebGet] 属性以使用 HTTP GET

[OperationContract]

[WebGet(RequestFormat=WebMessageFormat.Json)]

public void DoWork(Person p)

{

// 在此处添加操作实现

return;

}

[OperationContract]

[WebInvoke(RequestFormat=WebMessageFormat.Json,ResponseFormat=WebMessageFormat.Json,BodyStyle=WebMessageBodyStyle.WrappedRequest)]

public string DoWorkPost(string id, string title, string content)

{

return string.Format("您输入的标题是:{0}/n/n您输入的内容是:{1}/n/n此文章的id是:{2}", title, content, id.ToString());

}

[OperationContract]

[WebInvoke(RequestFormat=WebMessageFormat.Json,ResponseFormat=WebMessageFormat.Xml,BodyStyle=WebMessageBodyStyle.WrappedRequest)]

public Person DoWorkXml(string personName)

{

Person p = new Person();

p.Name = personName;

p.Age = 25;

p.Shoes = new List<string>() {"shoes1","shoes2" };

return p;

}

// 在此处添加更多操作并使用 [OperationContract] 标记它们

}

2、客户端代码

function SendAjaxWithPost(id, title, content) {

$.ajax({

type: "post",

contentType: "text/json",

dataType:"json",

url: "WCFServices/HelloWorld.svc/DoWorkPost",

data: '{"id":' + id + ',"title":"' + title + '","content":"' + content + '"}',

success: function(msg) {

alert(msg);

if (msg.d) {

alert(msg.d);

}

},

error: function(XMLHttpRequest, textStatus, errorThrow) {

alert("Error Occured!");

}

});

}

function WcfAjaxXml(personName) {

$.ajax({

type: "post",

contentType: "text/json",

dataType: "text/xml",

url: "WCFServices/HelloWorld.svc/DoWorkXml",

data: '{"personName":"' + personName + '"}',

success: function(msg) {

alert(msg);

var result = "";

result += "Name:" + $(msg).find("Name").text() + ",";

result += "Age:" + $(msg).find("Age").text() + ",";

result += "Shoes:" + $(msg).find("Shoes").text();

alert(result);

},

error: function(XMLHttpRequest, textStatus, errorThrow) {

alert("Error Occured!");

}

});

}

在用Jquery ajax调用WCF服务传递json对象时,在分别用Post,get数据方式时,设置json参数格式时需要采用不同的格式类型。

Get类型:参数传递格式:{ "name": name }

Post类型:参数传递格式:'{"name":"'+name+'"}' 如果用Get类型那样传参会在Wcf接受的时候会提示json格式错误

在用Post类型提交时,相应的WCF服务 [WebGet()]修改成相应的 [WebInvoke()],WCF默认传递格式为json,也可显示的添加为[WebGet(ResponseFormat=WebMessageFormat.Xml)]或者[WebInvoke(RequestFormat=WebMessageFormat.Xml)]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: