javascript - 在 Ajax 成功处理程序中处理 JSON 数据

标签 javascript ajax json asp.net-mvc

我想将一个复杂的对象从 Controller 方法传递回我的 Ajax 调用。据我从多项研究中了解到,JSON 是目前的选择。

这是我的 Controller 方法:

public JsonResult GetUserByData(string fn, string ln, string dep, string cc, string tel, string mail) {
        IList<Models.Person> userCollection = Models.Person.GetPersonsByData(fn, ln, dep, tel, cc, mail).ToList();
        if (userCollection.Count > 1) {
            return Json(new { Complex= true, HTML = PartialView("SomeView.cshtml", userCollection) });

        }
        else {
            return Json(new { Complex = false, HTML = PartialView("SomeOtherView.cshtml", userCollection.First()) });
        }

这是我的 Ajax 调用:

$.ajax({
            url: 'Home/GetUserByData',
            type: 'POST',
            dataType: 'html',
            data: {
                fn: firstname,
                ln: lastname,
                dep: department,
                cc: costcenter,
                tel: telephone,
                mail: mail
            },
            success: function (data) {
                if (data.Complex)
                    $('#Customer_Person').html(data.HTML);
                else
                    $('#Notification_Area').html(data.HTML);
            }
        });

回到我的脚本,似乎无法访问属性“Complex”和“HTML” - 我做错了什么?这是传递复杂对象的最佳方法还是有其他方法可以做到这一点?

最佳答案

由于您将返回类型指定为 HTML (dataType: 'html'),jQuery 会将响应视为字符串(而不是 JSON),因此 data.Complex code> 不会评估任何内容。如果您尝试将数据解析为 JSON,则可能会出错,因为 HTML 和 JSON 不能很好地协同工作。我建议首先返回 JSON,然后对 HTML 进行后续调用,或者仅在服务器上选择正确的模板并仅发送 HTML。

编辑: @Savaratkar 是正确的,您还可以对 HTML 进行编码/转义并通过 JSON 传递。

关于javascript - 在 Ajax 成功处理程序中处理 JSON 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30317049/

相关文章:

javascript - 而 x for at javascript

Javascript:如何在使用 Ajax 进行数据库查询后连接模板

php - 同一页面上有两个ajax,但第二个没有得到第一个已更改的内容

php - 从mysql JSON获取数据到Listview从模型获取ID

javascript - 来自 CSV 的 DS.js JSON 文件格式

javascript - 脚本87 : Invalid argument In IE8 Using HighCharts v3. 0.5

javascript - transitionConfig 在 native react 中不起作用

ajax - JSF 中的分组标记不呈现任何内容?

.net - 针对.Net中的架构验证JSON

javascript - 滚动位置> 0后如何平滑向下滚动到元素?