#javascript #php #html #json #xml-parsing
#javascript #php #HTML #json #xml-синтаксический анализ
Вопрос:
Итак, у меня проблема с моим кодом.
Это мой index.html .
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<div id="container">
</div>
<script>
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 amp;amp; this.status == 200) {
//Nachrichten aus JSON zurueckparsen
var messages = JSON.parse(this.responseText);
//alle Nachrichten durchgehen
messages.forEach(function(message) {
var container = document.getElementById('container');
var messageElement = document.createElement('div');
messageElement.id = 'message' message.id;
messageElement.innerHTML = message.message;
container.appendChild(messageElement);
//Onclick Handler für die message hinzufügen
messageElement.onclick=function() {
alert('message ' message.id ' clicked');
}
});
}
};
xhttp.open("GET", "login.php", true);
xhttp.send();
</script>
</body>
</html>
И это мой login.php:
<?php
$ar = array();
for ($i = 0; $i < 10; $i ) {
array_push($ar, array("test", "123"));
}
var_dump(json_encode($ar));
?>
Итак, как вы видите, я пытаюсь создать 10 массивов с помощью метода array_push. Но когда я открываю индекс, он говорит «undefined» и это 10 раз. Пожалуйста, помогите мне.
Комментарии:
1.
$ar
не содержит ничего сid
или amessage
. И почемуvar_dump
?
Ответ №1:
Написано «undefined», потому что в вашем ответе нет определенных ключей для «id» и «message».
Вам нужно установить ключи для ответа. Попробуйте это.
<?php
$ar = array();
for ($i = 0; $i < 10; $i ) {
$ar[] = array("id"=>$i, "message"=>"test $i");
}
echo json_encode($ar);
?>
Ответ №2:
Попробуйте это.
В PHP вам не нужно использовать метод array_push для добавления нового элемента в массив. Вместо этого вы используете этот шаблон, поскольку PHP автоматически расширяет массив.
$ar[] = [];
<?php
$ar = [];
for ($i = 0; $i < 10; $i ) {
$ar[] = ['test', '123'];
}
var_dump(json_encode($ar));
?>