PHP中二维数据格式的问题
下面是一段错误格式的Josn数据格式的代码,貌似是单引号的问题,反正就是通过ajax获取不到数组里面的key和value值。分别贴出ajax请求的代码,以及php中json数据的代码。
1 window.onload = function () { 2 //1、创建XMLHttpRequest对象 3 var xhr = null; 4 if(window.XMLHttpRequest){ 5 xhr = new XMLHttpRequest(); 6 } else { 7 xhr = new ActiveXObject("Microsoft.XMLHTTP"); 8 } 9 //2、调用open()方法 10 xhr.open("get","07getStudents.php",true) 11 //3、发送请求 12 xhr.send(null); 13 //4、制定回调函数 14 xhr.onreadystatechange = function () { 15 if(xhr.readyState == 4){ 16 if(xhr.status == 200){ 17 var result = xhr.responseText; 18 console.log(result); 19 result = JSON.parse(result); 20 console.log(result); 21 for(var i = 0;i < result.length;i++){ 22 var s = result[i]; 23 console.log(s.name); 24 console.log(s.age); 25 console.log(s.sex); 26 } 27 } 28 } 29 } 30 };
1 <?php 2 $arr = array( 3 "0"=>array('name':'张三','age':19,'sex':'男'), 4 "1"=>array('name':'张三','age':19,'sex':'男'), 5 "2"=>array('name':'张三','age':19,'sex':'男') 6 ); 7 echo json_encode($arr); 8 ?>
运行代码后,报错信息如下:大概意思json数据格式有问题,所以转换为对象时出现了错误。故不能通过对象.属性的方式获取数据。
即使把php中的数据换成下面的格式也报同样的错误:
1 <?php 2 $array = array( 3 "0"=>array("name":"张三","age":19,"sex":"男"), 4 "1"=>array("name":"张三","age":19,"sex":"男"), 5 "2"=>array("name":"张三","age":19,"sex":"男") 6 ); 7 echo json_encode($array); 8 ?>
知道是数据格式的问题后,一直不停的换格式,细到连换行都没放过。直到php中的代码改为如下以后才可访问到:
1 <?php 2 $arr=array( 3 "0"=>array( 4 "name"=>"张三", 5 "age"=>19, 6 "sex"=>"男" 7 ), 8 "1"=>array( 9 "name"=>"张三", 10 "age"=>19, 11 "sex"=>"男" 12 ), 13 "2"=>array( 14 "name"=>"张三", 15 "age"=>19, 16 "sex"=>"男" 17 ) 18 ); 19 echo json_encode($arr); 20 ?>
搞了半天,原来是:的问题,把:换为=>即可。因为这就是php中数组下标和数组值的赋值关系。