Проблема в том, что вы пытаетесь получить доступ к объекту, но на самом деле API выдает массив. Вы можете получить первый объект, выполнив jsonObj[0]
следующим образом:
<html>
<body>
<table class = "src">
<tr><th>Name</th><th>id</th></tr>
<tr><td><div id = "Name"></div></td>
<td><div id = "Id"></div></td></tr>
</table>
</body>
</html>
<script type="text/javascript">
var xmlhttp = new XMLHttpRequest();
var url = "https://jsonplaceholder.typicode.com/users";
xmlhttp.onreadystatechange = function(e) {
if (this.readyState == 4 && this.status == 200) {
// Javascript function JSON.parse to parse JSON data
var jsonObj = JSON.parse(this.responseText);
// jsonObj variable now contains the data structure and can
// be accessed as jsonObj.name and jsonObj.country.
document.getElementById("Name").textContent = jsonObj[0].name;
document.getElementById("Id").textContent = jsonObj[0].id;
}
}
xmlhttp.open("GET", url, true);
xmlhttp.send();
</script>
См. codesandbox , где работает код.
Редактировать: Как упомянул TJ Crowder , лучше использовать textContent
вместо innerHTML
, чтобы избежать нежелательного HTML отображения (никогда не доверяйте пользовательскому вводу!).