Метод getJSON возвращает неопределенное значение в jquery - PullRequest
0 голосов
/ 31 декабря 2018

Я работаю над проектом ядра 2.1 для Asp.net, и у меня нижеприведенная модель

Person

public class Person
{
    [Key]
    public int ID { get; set; }

    [Required]
    [MaxLength(150)]
    public string Name { get; set; }

    [Required]
    [MaxLength(150)]
    public string Family { get; set; }

    [Required]
    public int Age { get; set; }
}

В моем проекте есть контроллер веб-APIчто вы можете видеть его.

Контроллер веб-API

[Produces("application/json")]
[Route("api/People")]
public class PeopleController : ControllerBase
{

    private readonly ApplicationContext _db;

    public PeopleController(ApplicationContext db)
    {
        _db = db;
    }

    [HttpGet]
    public IEnumerable<Person> GetPerson()
    {
        return _db.Person;
    }
}

Теперь я хочу получить данные от моего контроллера веб-API и показать в index.cshtml

Index.cshtml

<h2>List Person</h2>

<table class="table table-bordered" id="list">
  <tr>
    <th>ID</th>
    <th>Name</th>
    <th>Family</th>
    <th>Age</th>
  </tr>
</table>

<script>
  $.getJSON("/api/People", function(res) {
    $.each(res, function(key, val) {
      alert(val.Age);
      var item =
        "<tr><td>" +
        val.ID +
        "</td><td>" +
        val.Name +
        "</td><td>" +
        val.Family +
        "</td><td>" +
        val.Age +
        "</td><td></td></tr>";

      $("#list").append(item);
    });
  });
</script>

Фактический Json на вкладке Network в браузере

[{"id":1,"name":"jack","family":"bfd","age":30},{"id":2,"name":"mr john","family":"sobhany","age":36}]

Но есть проблема.Все данные отображаются на мой взгляд, но все значения undefined.Что не так в моих кодах?

1 Ответ

0 голосов
/ 31 декабря 2018

Как вы можете видеть, глядя на JSON, ваш сериализатор JSON преобразует ваши C # -ориентированные имена, такие как Name (примечание: первая буква с большой буквы) в JavaScript-ориентированные, такие как name (примечание: первая буква в нижнем регистре)):

[{"id":1,"name":"jack","family":"bfd","age":30},{"id":2,"name":"mr john","family":"sobhany","age":36}]
Note ----^^^^^^

JavaScript - это регистрозависимый язык, поэтому, естественно, val.Name - это undefined, поскольку у val нет свойства Name;вместо этого вы хотите val.name (и так далее для id, family, bfd, age ...).

...