【问题标题】:Json Not sending dataJson不发送数据
【发布时间】:2015-07-21 15:43:41
【问题描述】:

我在使用 Json 时遇到了奇怪的问题。

我正在对 Controller 方法进行 ajax 调用,该方法将字符串作为输入并发送回我的类的列表。

基本上,我在更改下拉菜单时调用 json,以加载另一个下拉菜单的相应字段。

在下拉菜单 1 中,我有 2 个选项和一个占位符(“选择”)。

奇怪的是,当我选择 2 选项时,它会将数据添加到下拉菜单 2。但是如果我选择选项 1,那么它不会在 json 调用中获取数据,因此不会添加任何内容到下拉菜单 2,虽然我的控制器函数正在返回 json 中的数据。

我的 json 调用如下:

function changeTable() {
            var index = 0;
            var info = { majoraccountvalue: document.getElementById("expancesMajorAccount").value };
            var dropdowm = $("#expancesMinorAccountName");
            jQuery.ajax({
                type: "POST",
                url: "@Url.Action("GetData")",
                dataType: "json",
                contentType: "application/json; charset=utf-8",
                data: JSON.stringify(info),
                success: function (data) {
                    debugger;
                    var arr = data.MinorAccountHeads;
                    dropdowm.empty()
                    alert(data);

                    for (index = 0; index < arr.length; index++) {
                        dropdowm.append($('<option></option>').val(arr[index].ID).html(arr[index].Name));
                    }
                },
                failure: function (errMsg) {
                    alert(errMsg);
                }
            });
        }

而我的控制器方法是:

public JsonResult GetData(long majoraccountvalue)
     {
         Myclass model = new myclass();
         model.FillData(majoraccountvalue);
         return Json(new { model.MinorAccountHeads });
     }

我的控制器函数在这两种情况下都返回数据。当我选择选项 1 以及选择选项 2 时。

谢谢

【问题讨论】:

    标签: c# jquery asp.net ajax json


    【解决方案1】:

    我能够解决错误。由于这个人认识我本人,我能够帮助他解决这个问题。

    基本上,问题在于函数发送的数据的序列化:public JsonResult GetData(long majoraccountvalue)

    该函数通过序列化自定义数据库实体对象的 model.MinorAccountHeads 列表来返回 Json 数据。

    使用上述方法代码进行序列化时出现自引用循环。

    我能够通过使用 Newtonsoft.json 库更改方法来解决它: 公共对象 GetData(long majoraccountvalue) { 我的类模型 = 新的我的类(); model.FillData(majoraccountvalue); 返回 JsonConvert.SerializeObject(model.MinorAccountHeads); }

    【讨论】:

      【解决方案2】:
      1. 尝试在 ajax 参数中使用 cache:false。
      2. 失败 - 不正确。您需要使用“错误”。可能是您收到错误的第一个请求...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-07
        • 1970-01-01
        • 1970-01-01
        • 2011-06-08
        • 2015-04-12
        • 2014-02-10
        • 2018-12-22
        • 2017-01-16
        相关资源
        最近更新 更多