用Jquery访问WebService并返回Json的代码第1/3页
程序员文章站
2022-04-29 12:53:01
在我们的应用中一般会是这样的,使用了jquery作为客户端框架,ajax请求也通常返回html或者json。html这里就不讨论了。返回json一般都是搞一个handler...
在我们的应用中一般会是这样的,使用了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>
/// summary description for ws1
/// </summary>
[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; }
}
}
所以我觉着比较完美的解决方法是让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>
/// summary description for ws1
/// </summary>
[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; }
}
}
1