从View上的AJAX调用显示数据(ASP.NET MVC)

时间:2017-04-12 10:06:12

标签: javascript jquery asp.net ajax asp.net-mvc

我有后端的AJAX调用来获取数据

这是后端代码

[HttpGet]
    public ActionResult EmailsList()
    {
        var itemsEmail = db.InvitationMails
            .Select(x=> new
            {
                Email = x.To.ToString(),
                Name = x.Name.ToString(),
            })
            .ToList();
        return Json(itemsEmail, JsonRequestBehavior.AllowGet);
    }

这是AJAX调用

<script>
$('#save_quest').click(function () {
    email_update();
});

function email_update() {
    $.ajax({
        url: '@Url.Action("EmailsList", "Questions")',
        contentType: 'application/json; charset=utf-8',
        type: 'GET',
        dataType: 'json',
        processData: false,
        success: function (result) {

            console.log(result);
            console.log(result.EmailsList);
        }
    });
}

效果很好。

但如果我像console.log(result.EmailsList);

那样写这一行console.log(result.EmailsList.Email);

我会收到此错误

  

ncaught TypeError:无法读取属性&#39;电子邮件&#39;未定义的

我如何获得一个参数?

4 个答案:

答案 0 :(得分:0)

因为EmailsList是一个列表,你需要像这样循环它:

for (var i = 0; i < result.EmailsList.length; i++) {
            //to get email use this
            result.EmailsList[i].Email;
        }

如果您只想获得第一封电子邮件,那么您可以这样做:

result.EmailsList[0].Email

答案 1 :(得分:0)

您的result变量已经是列表..所以您只需要使用result[0].Email

function email_update() {
    $.ajax({
        url: '@Url.Action("EmailsList", "Questions")',
        contentType: 'application/json; charset=utf-8',
        type: 'GET',
        dataType: 'json',
        processData: false,
        success: function (result) {
            console.log(result[0].Email);
            console.log(result[0].Name);
        }
    });
}

答案 2 :(得分:0)

请将您的代码更改为此。您无法直接访问列表的属性,您必须更改索引才能访问它。

  console.log(result.EmailsList[0].Email);

答案 3 :(得分:0)

尝试

$.each( result.EmailsList, function (item, i) {
    alert(item.Email);
})