如何将序列化集合转换为 Ajax 中的 javascript 数组
How can i convert serialized collection to javascript array in Ajax
我有一个代码,我在 Web 服务中序列化一个列表并将其写在响应上,我想从那里获取该响应并使用 Ajax[=15= 转换为 javasript 中的数组]
这是网络服务代码
[WebMethod]
public void getLatLng() {
city = new City();
city.Lat = "-29.0882";
city.Lng = "26.2098";
all.Add(city);
//2
city = new City();
city.Lat = "-29.1032";
city.Lng = "26.1965";
all.Add(city);
//3
city = new City();
city.Lat = "-29.143";
city.Lng = "26.1803";
all.Add(city);
//4
city = new City();
city.Lat = "-29.1847";
city.Lng = "26.2393";
all.Add(city);
//4
city = new City();
city.Lat = "-29.1292";
city.Lng = "26.2526";
all.Add(city);
JavaScriptSerializer js = new JavaScriptSerializer();
Context.Response.Write(js.Serialize(all));
}
Javascript
const area = new Array;
$.ajax({
method: "post",
url: "LatLng.asmx/getLatLng",
dataType: "json",
success: function (data) {
for (i = 0; i < data.length; i++) {
//create objects
let one = { lat: data[i].Lat, lng: data[i].Lng };
//add objects to array
area.push(one);
console.log("abc", JSON.stringify(one));
}
},
error: function (repo) {
alert("error " + repo);
}
});
这是我的网络服务结果
[{"Lat":"-29.0882","Lng":"26.2098"},{"Lat":"-29.1032","Lng":"26.1965"},{"Lat":" -29.143","Lng":"26.1803"},{"Lat":"-29.1847","Lng":"26.2393"},{"Lat":"-29.1292","Lng":"26.2526"} ]
我想把它变成这样的数组
const area = [
{ lat: -29.0882, lng: 26.2098 },
{ lat: -29.1032, lng: 26.1965 },
{ lat: -29.143, lng: 26.1803 },
{ lat: -29.1847, lng: 26.2393 },
{ lat: -29.1292, lng: 26.2526 },
我建议使用 Newtonsoft.Json
而不是 old/legaxcy JavaScriptSerializer
。同时将您的控制器方法更新为 return 字符串:
using Newtonsoft.Json;
...
[WebMethod]
public string getLatLng()
{
...
return JsonConvert.SerializeObject(all);
}
将您的 javascript/jquery 更新为以下内容:
let area = [];
$.ajax({
method: "post",
url: "LatLng.asmx/getLatLng",
dataType: "json",
success: function (response) {
data = response.d; // important for asp.net
area = JSON.parse(data);
},
error: function (repo) {
alert("error " + repo);
}
});
我有一个代码,我在 Web 服务中序列化一个列表并将其写在响应上,我想从那里获取该响应并使用 Ajax[=15= 转换为 javasript 中的数组]
这是网络服务代码
[WebMethod]
public void getLatLng() {
city = new City();
city.Lat = "-29.0882";
city.Lng = "26.2098";
all.Add(city);
//2
city = new City();
city.Lat = "-29.1032";
city.Lng = "26.1965";
all.Add(city);
//3
city = new City();
city.Lat = "-29.143";
city.Lng = "26.1803";
all.Add(city);
//4
city = new City();
city.Lat = "-29.1847";
city.Lng = "26.2393";
all.Add(city);
//4
city = new City();
city.Lat = "-29.1292";
city.Lng = "26.2526";
all.Add(city);
JavaScriptSerializer js = new JavaScriptSerializer();
Context.Response.Write(js.Serialize(all));
}
Javascript
const area = new Array;
$.ajax({
method: "post",
url: "LatLng.asmx/getLatLng",
dataType: "json",
success: function (data) {
for (i = 0; i < data.length; i++) {
//create objects
let one = { lat: data[i].Lat, lng: data[i].Lng };
//add objects to array
area.push(one);
console.log("abc", JSON.stringify(one));
}
},
error: function (repo) {
alert("error " + repo);
}
});
这是我的网络服务结果
[{"Lat":"-29.0882","Lng":"26.2098"},{"Lat":"-29.1032","Lng":"26.1965"},{"Lat":" -29.143","Lng":"26.1803"},{"Lat":"-29.1847","Lng":"26.2393"},{"Lat":"-29.1292","Lng":"26.2526"} ]
我想把它变成这样的数组
const area = [
{ lat: -29.0882, lng: 26.2098 },
{ lat: -29.1032, lng: 26.1965 },
{ lat: -29.143, lng: 26.1803 },
{ lat: -29.1847, lng: 26.2393 },
{ lat: -29.1292, lng: 26.2526 },
我建议使用 Newtonsoft.Json
而不是 old/legaxcy JavaScriptSerializer
。同时将您的控制器方法更新为 return 字符串:
using Newtonsoft.Json;
...
[WebMethod]
public string getLatLng()
{
...
return JsonConvert.SerializeObject(all);
}
将您的 javascript/jquery 更新为以下内容:
let area = [];
$.ajax({
method: "post",
url: "LatLng.asmx/getLatLng",
dataType: "json",
success: function (response) {
data = response.d; // important for asp.net
area = JSON.parse(data);
},
error: function (repo) {
alert("error " + repo);
}
});