2017-04-12 64 views
0

我有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: Cannot read property 'Email' of undefined

我怎样才能得到一个参数?

+0

你'result'是对象的集合,集合中的每个项目包含属性'Email'和'Name' - 你需要通过数组循环和获取属性(当你的值已经是字符串时,你不需要使用'.ToString()')。您也可以删除无意义的contentType和processData选项 –

+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 
+0

无法读取未定义的属性“长度” – Eugene

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); 
     } 
    }); 
} 
+0

“位置1处JSON中的意外标记o” – Eugene

0

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

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

尝试

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