首页 > 解决方案 > 尝试使用 JSON 数据填充表单,一切都未定义

问题描述

我正在使用 Umbraco CMS,这是一个基于 .NET Framework 构建的 ASP.NET 网站。我有一个返回 JSON 数据的 API。我的最终目标是以某种形式显示这些数据,然后可以对其进行修改并发送到不同的 API 以更新数据。

但是,问题是我只是在 data[i].anything 上看到 undefined。它也会永远循环,直到我关闭浏览器。

这是从外部 API 获取数据的控制器方法:

[HttpGet()]
    public string GetReportParamaters(string id)
    {
        string json;
        
        using (WebClient wc = new WebClient())
        {
            wc.Headers.Add("Content-Type", "application/json");
            wc.Headers.Add("Accept:application/json");
            json = wc.DownloadString("http://apiurl/" + id);

        }

        return json;
    }

当我在这里设置断点时,它似乎正在工作。当我访问与此方法对应的 URL 时,JSON 被包装在一个 XML 标记中,我不确定这是否是问题的一部分。但无论哪种方式,我都能看到我期望的 JSON 数据。

这是我视图中用于显示 JSON 数据的 HTML 和 Javascript,这是我看到未定义的地方:

HTML:

<form id="ssrsData">

</form>

JavaScript:

<script>
$("#reports").change(function () {
    $.get("/ControllerURL", { id: $('#reports').find(":selected").val() }, function (data) {
        var s = '';
        for (var i = 0; i < data.length; i++) {
            s += '<label for="' + data[i].Name + '">' + data[i].Name + ':</label><input type="text" id="' + data[i].Name + '" name="' + data[i].Name + '" value="' + data[i].Value + '"><br><br>'

        }
        $("#ssrsData").html(s);
    });
});

JavaScript 查找要更改的下拉列表。选择一个选项后,它会将 ID 发送到控制器以获取 JSON 数据。然后它解析 HTML 中的 JSON 并为每个 JSON 对象添加文本框。

至少在理论上,data[i].Name 和 data[i].Value 都显示未定义。循环也是无限的,它只是不断添加文本框,直到我停止它。

当我在 Chrome 的控制台中调用 $.get("/controllerURL") 时,它看起来像是在返回我的 JSON 数据。

我需要做什么才能使用我的 JSON 数据生成表单?

标签: javascriptjqueryasp.netjsonumbraco

解决方案


推荐阅读