2017-04-12 67 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); 
})