2013-02-11 141 views
0

我正在使用jquery方法,从客户端发送信息(即只有成员标识#)到服务器端。Ajax调用Asp.net Web方法使用jQuery

服务器端实现了传统的Web方法,以捕获数据发送并基于它执行SQL查询。

Web-service-method-using-jQuery

但是到现在为止我已经从服务器端的SQL查询后返回了一个字符串返回给客户端。

想知道什么是最好的方式来返回一系列复杂的字符串...成员身份证号码,开始日期,结束日期,成员类型...根据成员的类型,可以有多个开始日期和结束日期。

我应该看看XML吗?

+2

你应该返回一个json对象到客户端 – 2013-02-11 19:44:33

+0

与Json对象我会有问题,如果有多个值的开始日期和结束日期在同一个成员ID下? 也我会使用JavaScript中的eval()解析通过我的对象? – Philo 2013-02-11 19:47:41

+0

此外,我想将从服务器到客户端的复杂值集合传递给客户端。 – Philo 2013-02-11 21:12:04

回答

1

怎么样,甚至返回一个DataTable

$.ajax({ 
type: "POST", 
url: "YourPage.aspx/doSomething", 
data: "{'id':'1'}", 
dataType: "json", 
contentType: "application/json; charset=utf-8", 
success: function (data) { 
    var returnedstring = data.d; 
    var jsondata = $.parseJSON(data.d);//if you want your data in json 
    } 
}); 

ASPX:

[WebMethod] 
public static string doSomething(int id) 
{ 
    .... 
    DataTable dt = new DataTable(); 
    dt = anothermethodReturningdt(id) 

    return JsonConvert.SerializeObject(dt); 
} 

可以使用json.net序列化.NET对象

编辑

你也可以做这

[WebMethod] 
public static string doSomething(int id) 
{ 
    Product product = new Product(); 
    product.Name = "Apple"; 
    product.Expiry = new DateTime(2008, 12, 28); 
    product.Price = 3.99M; 
    product.Sizes = new string[] { "Small", "Medium", "Large" }; 

    return JsonConvert.SerializeObject(product); 
} 

重点是你可以序列化任何类型的对象,数组,集合等,然后将它传递回调用脚本。

+0

你能详细介绍anothermethodReturningdt(id)吗?还有什么意思返回一个数据库?这是一个无状态的应用程序,返回整个数据库有什么样的效果? – Philo 2013-02-12 16:48:29

+1

我不是在谈论整个数据库。您可以返回任何类型的对象或数据集合,包括[Datatable](http://msdn.microsoft.com/en-us/library/system.data.datatable.aspx)。 – ZedBee 2013-02-12 18:42:04

+0

实施WebMethods时,应避免手动序列化对象。 http://encosia.com/asp-net-web-services-mistake-manual-json-serialization/ – Emyr 2014-04-24 15:33:47