gpt4 book ai didi

javascript - 格式化多结果单个 Json 值

转载 作者:行者123 更新时间:2023-11-28 07:16:07 26 4
gpt4 key购买 nike

我有一个change/getJson函数,如下所示:

$('#CountryId').change(function () {
$.getJSON('@Url.Action("StateList", "Manage")', {id: $('#CountryId').val()}, function (data) {
var items = '<option value="">Select a State</option>';
$.each(data.List, function (i, state) {
items += "<option value='" + state.Value + "'>" + state.Text + "</option>";
});
$('#StateId').html(items);
//Fail
//console.log(">>>>" + data.LatLng.Latitude);
//$('#Latitude').val(data.LatLng.Latitude);
//Success
//$.each(data.LatLng, function (i, country) {
// $('#Latitude').val(country.Latitude);
// console.log(">>>>" + country.Latitude);
//});
$('#CityId').html('<option value="">Select a City</option>');
});
});

数据从我的 json 结果返回正常。它返回该 CountryId 的状态列表(CountryId 是来自 States 表的 FK)以构建我的选择列表/下拉列表以进行控制。它还返回 CountryId 的纬度和经度(来自国家/地区表)。我的选择列表的状态列表很好。但是,纬度和经度永远只是一组值(即一条记录)。我让它在 jquery 中工作的唯一方法是使用 .each 循环:

$.each(data.LatLng, function (i, country) {
$('#Latitude').val(country.Latitude);
console.log(">>>>" + country.Latitude);
});

我不需要循环,因为它是一组值。是否有另一种更干净的方法来格式化它并避免额外的功能?正如您从上面的代码中看到的,我已经尝试过:

console.log(">>>>" + data.LatLng.Latitude);
$('#Latitude').val(data.LatLng.Latitude);

...以及许多其他事情,它总是返回未定义。这是 Controller 中我的 StateList 片段:

[HttpGet]
public ActionResult StateList(int id)
{
var list = db.States.Where(d => d.CountryId == id).Select(d => new { Text = d.StateName, Value = d.StateId }).ToList();
var latlng = db.Countries.Where(d => d.CountryId == id).Select(d => new { d.Latitude, d.Longitude });
var result = new { List = list, LatLng = latlng };
return Json(result, JsonRequestBehavior.AllowGet);
}

我尝试格式化此 ActionResult 中的 latlng 数据(即 ToListToStringLat = d.Latitude,等等),但jquery似乎并不关心,只要我把它放在循环中。

我在互联网上找到的所有示例都是针对 json 列表的,这些列表在状态列表部分非常有用。但是,我似乎找不到任何有关单个 json 值的信息。到目前为止,您似乎必须将值分成几部分,以便 jquery 可以解释它?有人知道消除循环的技巧吗?

最佳答案

您的 LatLng 查询似乎返回一个集合而不是单个项目。因此,您的 json 结果将是一个数组,迫使您进行迭代,同时使 data.LatLng.Latitude 未定义。

您可以调整查询以返回单个项目而不是 .Single(), .SingleOrDefault(), .First(), or .FirstOrDefault() 的集合。 .

var latlng = db.Countries.Single(d => d.CountryId == id)
.Select(d => new { d.Latitude, d.Longitude });

然后您可以删除额外的 $.each() 循环来访问 LatLng 属性。

关于javascript - 格式化多结果单个 Json 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30811397/

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