JQuery Ajax, почему в случае успеха у меня есть ошибка, почему?

Почему в успехе у меня ошибка?

$('#ck').click(function() {
  var StudentData = [{
    'Name': 'Ali',
    'Age': 27
  }, {
    'Name': 'Sam',
    'Age': 32
  }];

  $.ajax({
    url: "/Home/StudentInfo",
    data: JSON.stringify(StudentData),
    ...
    success: function(response) {
      alert(response[0].Name);
    },
    error: function() {
      alert("error");
    },
  });
});

1 ответ

Решение

Основываясь на чрезмерно длинном потоке комментариев выше, вы утверждаете, что имеете этот серверный код:

public JsonResult StudentInfo(List<object> StudentData)
{
    return Json(StudentData);
}

Итак, вы возвращаете List<object> к вашему клиентскому коду. Затем в своем клиентском коде вы пытаетесь получить доступ к свойству элемента в этом списке:

success: function (response) {
    alert(response[0].Name);
}

Ну, проще говоря, object не содержит свойство под названием Name, Этого никогда не было, и, вероятно, никогда не будет. Таким образом, вы не можете получить доступ к свойству, которое не существует. Следовательно, это undefined в JavaScript.

Похоже, вы хотели определить класс для ваших объектов. Что-то простое, как это:

public class Student
{
    public string Name { get; set; }
    public int Age { get; set; }
}

Затем вы можете использовать этот класс в вашем методе действия:

public JsonResult StudentInfo(List<Student> StudentData)
{
    return Json(StudentData);
}

поскольку Student действительно есть свойство под названием Name Вы можете использовать это свойство в своем коде на стороне клиента.

Другие вопросы по тегам