使用Javascript Ajax 通信操作JSON数据 [下]
上一篇文章我们获得后台数据库的数据后转换成json格式然后返回到前台,但只是返回的一位数组,这次我们返回二维和三维数组和对象。
前台代码shizhan.html:
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>json数据获取</title> 5 <meta charset="utf-8"> 6 <script src='jquery.js'></script> 7 <script type="text/javascript"> 8 $("document").ready(function() { 9 var url="shizhan.php"; 10 var data={"do":"first"}; 11 12 $.getJSON(url,data,function(res){ 13 $("#username").val(res.username); 14 $("#password").val(res.password); 15 }); 16 17 var data={"do":"second"}; 18 $.getJSON(url,data,function(res) { 19 $("#members").val(res.third.members.username); 20 }); 21 22 var data={"do":"third"}; 23 $.getJSON(url,data,function(res){ 24 $("#address").val(res.address[1].username); 25 }); 26 27 }); 28 </script> 29 </head> 30 <body> 31 <h2>一位数组json数据显示</h2> 32 <input type="text" name="username" id="username" /><br/> 33 <input type="password" name="password" id="password"> 34 35 <h2>二位数组json数据显示</h2> 36 <textarea id="members"></textarea> 37 38 <h2>三位数组json数据显示</h2> 39 <textarea id="address"></textarea> 40 </body> 41 </html>
这里我们用$.getJSON(url,data,callback)来获得我们从url处返回的json格式的数据,注意,$.getJSON()中的JSON必须大写。
并且这时我们传递给后台的参数不把它放在url的末尾,而是直接放在新定义的data变量中。所以后台程序获取参数时不再使用$_GET[]了,而是使用$_REQUEST[].
还有一点值得提醒的是,在将返回得到的json格式的数据时,如果后台的二位数组中的第一位是['1'],则我们在前台赋给变量中的数据的格式应为上述代码中的
$("#address").val(res.address[1].username); ,而不是 $("#address").val(res.address.1.username); ,而如果后台的二维或者是三维数组的第一位是['third']等英文时,则可用上述代码中的 $("#members").val(res.third.members.username); .
后台代码:
1 <?php 2 3 $do=$_REQUEST['do']; 4 5 $member['username']='慕课网'; 6 $member['password']='mukewang'; 7 8 $members['1']['username']='张三'; 9 $members['1']['password']='zhangsan'; 10 $members['2']['username']='李四'; 11 $members['2']['password']='lisi'; 12 $members['2']['address']='朝阳区'; 13 14 $members['third']['members']['username']='我是第三个用户名'; 15 16 class addressClass{ 17 public $address = array(); 18 19 public function setAddress($array) { 20 $this->address=$array; 21 } 22 23 public function getAddrss() { 24 return $this->address; 25 } 26 } 27 28 $addressObj = new addressClass(); 29 30 $addressObj->setAddress($members); 31 32 switch($do) { 33 case 'first' : echo json_encode($member);break; 34 35 case 'second': echo json_encode($members);break; 36 37 case 'third' : echo json_encode($addressObj);break; 38 }
后台代码中我们使用json_encode()函数来将一位数组,二维数组,三位数组和对象转换为json格式的数据。