gpt4 book ai didi

c# - 从 web 服务创建 JSON 返回 "strings"以与 jquery ajax 一起使用

转载 作者:行者123 更新时间:2023-11-30 14:03:20 26 4
gpt4 key购买 nike

我尝试使用此处的教程将简单的 Web 服务实现到 asp.net 应用程序中:http://dotnetslackers.com/articles/ajax/JSON-EnabledWCFServicesInASPNET35.aspx#1301http://dotnetslackers.com/articles/ajax/Using-jQuery-with-ASP-NET.aspx

问题是,我的数据正在返回,如此屏幕截图所示(根据 Firebug ): alt text

    $("#btnGet").click(function () {

$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "TimeService.svc/GetCar",
data: "{}",
dataType: "json",
success: function (data) {
alert(data.d);
}
});

});

});

我的 Web 服务方法如下所示:

[OperationContract]
public string GetCar()
{
using (var sqlc = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\CarTracker.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"))
{
sqlc.Open();
var cmd = sqlc.CreateCommand();
cmd.CommandText = "SELECT CarID, CarName FROM tblCars";
using (var reader = cmd.ExecuteReader())
{
string sCar = "";
int testcount = 1;
for (int i = 0; i < testcount; i++)
{
reader.Read();
sCar += reader["CarName"].ToString();
}


return sCar; // Car_1
}
}
}

所以我的问题是:

  1. firebug 中的“d”从哪里来来自?

  2. 如何构建“JSON 风格”基于我的数据库返回的“字符串”回到 jquery ajax 函数?

理想情况下,我希望 jquery ajax 数据看起来像这样:

{"TotalCars": x, "CarList":[{"CarName":"x1", "CarID":"id1"},{"CarName":"x2", "CarID":"id2"}]} 

然后使用 jquery,我可以做 alert(data.TotalCars); 之类的事情。

请记住,我对此非常陌生,因此非常感谢您提供的任何帮助。先感谢您! <3

最佳答案

网络服务框架使用“d”来确保服务永远不会返回裸数组。这样做是为了解决潜在的问题 cross-site Javascript exploit .

您想创建描述您的数据契约的类,例如:

[DataContract]
public class CarCollection {
[DataMember]
public int TotalCars { get { return CarList.Count; }}
[DataMember]
public List<Car> CarList { get; set; }
}

[DataContract]
public class Car {
[DataMember]
public string CarName { get; set; }
[DataMember]
public string CarId { get; set; }
}

然后您将使用这些类建立您的返回值。您还可以告诉 WCF 使用 WebGet 属性接受 HTTP GET 方法和 JSON 序列化响应:

[OperationContract]
[WebGet(ResponseFormat=WebMessageFormat.Json)]
public string GetCar()
{
// You will probably build this up from your databas
var cars = new CarCollection { CarList = new List<Car>() {
new Car { CarName = "x1", CarId = "id1" },
new Car { CarName = "x2", CarId = "id2" },
new Car { CarName = "x3", CarId = "id3" },
}};

return cars;
}

WCF 会自动将您的对象图序列化为 JSON 并将其发送回客户端。

然后您还可以使用简化的 JQuery 方法 get :

$("#btnGet").click(function () {
$.get("TimeService.svc/GetCar", function(data){
alert(data);
});
});

关于c# - 从 web 服务创建 JSON 返回 "strings"以与 jquery ajax 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4383098/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com