Как устранить проблему с json_encode () с помощью xml-запроса

#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 или a message . И почему 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));
?>