Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何通过xml请求修复json_encode()的问题_Javascript_Php_Html_Json_Xml Parsing - Fatal编程技术网

Javascript 如何通过xml请求修复json_encode()的问题

Javascript 如何通过xml请求修复json_encode()的问题,javascript,php,html,json,xml-parsing,Javascript,Php,Html,Json,Xml Parsing,所以我的代码有问题 这是我的index.html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <div id="container"> </div> <script> var xhttp = new XMLHttpRequest(); xhtt

所以我的代码有问题

这是我的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 && 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>

var xhttp=newXMLHttpRequest();
xhttp.onreadystatechange=函数(){
if(this.readyState==4&&this.status==200){
//Nachricten aus JSON Zureckparsen
var messages=JSON.parse(this.responseText);
//阿勒·纳克希滕·杜奇亨
messages.forEach(函数(消息){
var container=document.getElementById('container');
var messageElement=document.createElement('div');
messageElement.id='message'+message.id;
messageElement.innerHTML=message.message;
container.appendChild(messageElement);
//Onclick处理程序für die message hinzufügen
messageElement.onclick=function(){
警报('message'+message.id+'clicked');
}
});
}
};
open(“GET”,“login.php”,true);
xhttp.send();
这是我的login.php:

<?php
  $ar = array();
  for ($i = 0; $i < 10; $i++) {
    array_push($ar, array("test", "123"));
  }
  var_dump(json_encode($ar));
?>

就像你看到的,我正试图用array_push方法制作10个数组。但当我打开索引时,它会显示“未定义”,并且会显示10次。请帮帮我。

试试这个

<?php
  $ar = array();
  for ($i = 0; $i < 10; $i++) {
    $ar[] = array("id"=>$i, "message"=>"test $i");
  }
  echo json_encode($ar);
?>
在PHP中,不需要使用array_push方法向数组中添加新元素。 相反,您可以使用此模式,因为PHP会自动扩展数组

$ar[]=[]

<?php
  $ar = [];
  for ($i = 0; $i < 10; $i++) {
    $ar[] = ['test', '123'];
  }
  var_dump(json_encode($ar));
?>

它表示“未定义”,因为您的响应中没有为“id”和“message”定义键

您需要设置响应键。试试这个

<?php
  $ar = array();
  for ($i = 0; $i < 10; $i++) {
    $ar[] = array("id"=>$i, "message"=>"test $i");
  }
  echo json_encode($ar);
?>

$ar
不包含任何带有
id
消息的内容。为什么
var\u dump