php webservice返回json,用Jquery访问WebService并返回Json的代码

在我们的应用中一般会是这样的,使用了jquery作为客户端框架,ajax请求也通常返回html或者json。html这里就不讨论了。返回json一般都是搞一个handler.ashx来处理请求,拼凑字符串来返回json。从而放弃了ws,因为ws返回的是xml,使用起来不方便。

所以我觉着比较完美的解决方法是让ws返回json而且不用asp.net ajax的客户端框是比较理想的解决方法。

通过观测发现asp.net ajax的客户端框架请求webservice的时候返回的是json,为什么webservice没有返回xml而返回了json呢?抓包分析到,关键在request的headers中 “Content-Type: application/json;utf-8” ,因此webservice就使用了json的序列化,应该是“System.Web.Script.Serialization.JavaScriptSerializer”这个类完成的工作,通过web.config的配置,把*.asmx交给了System.Web.Extensions.Dll。也就是这里还是用了asp.net ajax,不过是用的服务端部分,我这里直接用的asp.net 3.5

以上都是在啰嗦,具体的方法很简单,看例子

ws1.asmx

using System;

using System.Collections;

using System.ComponentModel;

using System.Data;

using System.Linq;

using System.Web;

using System.Web.Services;

using System.Web.Services.Protocols;

using System.Xml.Linq;

namespace test2

{

///

/// Summary description for WS1

///

[WebService(Namespace = "http://onewww.org/")]

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

[ToolboxItem(false)]

[System.Web.Script.Services.ScriptService]

public class WS1 : System.Web.Services.WebService

{

[WebMethod]

public string HelloWorld()

{

return "Hello World";

}

[WebMethod]

public TestUser CreateUser(string name,int age)

{

return new TestUser { Name = name, Age = age };

}

}

public class TestUser

{

public string Name { get; set; }

public int Age { get; set; }

}

}

test.html

Untitled Page

function requestHelloWorld(){

WebService('ws1.asmx/HelloWorld',function(obj){alert(obj);});

}

function requestCreateUser(){

WebService('ws1.asmx/CreateUser',function(obj){alert(obj.Name);},'{name:"林子",age:25}');

}

function WebService(url,callback,pars){

$.ajax({

data:pars,

url: url,

type: "POST",

contentType: "application/json;utf-8",

dataType:'json',

cache: false,

success: function(json){

callback(json.d);

},

error:function(xml,status){

if(status=='error'){

try{

var json = eval('(' + xml.responseText + ')');

alert(json.Message+'\n'+json.StackTrace);

}catch(e){}

}else{

alert(status);

}

},

beforeSend:function(xml){

if(!pars) xml.setRequestHeader("Content-Type", "application/json;utf-8")

}

});

}

web.config为vs2008在.net 3.5状态下创建的默认的 也有很重要的作用 这里贴出来

用javascript直接访问asp.net的webservice,方法类似,自己构建ajax请求而已,注意的就是设置header,剩下的asp.net 3.0以上版本会自动序列化为json

代码下载

http://xiazai.jb51.net/yuanma/asp.net/jquery_webservices_json.zip

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值