如何根据返回的 Json 更新两个字段

How to update two field based on the return Json

本文关键字:两个 字段 更新 何根 返回 Json      更新时间:2023-09-26

我有一个 folliwng 脚本,它实际上对两个单独的操作方法进行了两次调用,并更新了相关字段:-

<script type="text/javascript">
    $(document).ready(function () {
        $("#Switch_RackID").change(function () {
            var idRack = $(this).val();
            $.getJSON("/Switch/LoadDataCenterByRack", { id: idRack },
            function (RackData) {
                var select = $("#Switch_TMSRack_DataCenter_Name");
                select.empty();
                $("#Switch_TMSRack_DataCenter_Name").val(RackData.Text);
            });
            $.getJSON("/Switch/LoadZoneByRack", { id: idRack },
            function (RackData2) {
                var select = $("#Switch_TMSRack_Zone_Name");
                select.empty();
                $("#Switch_TMSRack_Zone_Name").val(RackData2.Text);
            });
            });
        });

</script>

但我的问题是天气我可以使用 getjson 进行一次调用而不是进行两次调用,然后更新相关字段? 我的操作方法如下所示:-

      public JsonResult LoadDataCenterByRack(int id)
            {
                string datacentername = repository.FindRack(id).DataCenter.Name;
                var DCData = new { Text = datacentername, Value = datacentername };
                return Json(DCData, JsonRequestBehavior.AllowGet);
            }
public JsonResult LoadZoneByRack(int id)
            {
                string zonername = repository.FindRack(id).Zone.Name;
                var ZData = new { Text = zonername, Value = zonername };
                return Json(ZData, JsonRequestBehavior.AllowGet);
            } 

有人可以建议吗?谢谢

当然可以。您可以返回Anonymous object

将控制器操作更改为

public JsonResult LoadDataCenterByRack(int id)
{
    string datacentername = repository.FindRack(id).DataCenter.Name;
    var DCData = new { Text = datacentername, Value = datacentername };
    string zonername = repository.FindRack(id).Zone.Name;
    var ZData = new { Text = zonername, Value = zonername };
    return Json(new {
        DCData,
        ZData
    }, JsonRequestBehavior.AllowGet);
}

JavaScript

$.getJSON("/Switch/LoadDataCenterByRack", { id: idRack },
function (response) {
    $("#Switch_TMSRack_DataCenter_Name").val(response.DCData.Text);
    $("#Switch_TMSRack_Zone_Name").val(response.ZData.Text);
}); 

您可以通过在 JavaScript 中使用 console.log 来检查您得到的响应,例如

console.log(response)