我有后端的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;未定义的
我如何获得一个参数?
答案 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);
})