下面是一段错误格式的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 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 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 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中数组下标和数组值的赋值关系。