开发者新闻:jQuery教程:通过JSON传递PHP数组
发布者: kaotik于2009/11/16 10:40:00 73512次阅读本教程是之前教程的延续。这将教你使用JSON的好处。
方法2
什么是JSON?
JSON代表“javascript对象表示法”,引用
"被誉为浏览器中XML的继承者,JSON雄心勃勃地要成为浏览器和服务器之间信息交换的一种简单、优雅的数据格式;在这个过程中,它将引领下一个版本的万维网本身进入世界。"
所以,基本上,我们可以把JSON看作是PHP和JavaScript(在我们的案例中,jQuery)之间的连接语言。因此,当我们构建网页(使用jQuery)时,我们可以使用Ajax调用(无论$.load, $.ajax还是其他方法)从客户端到服务器,然后我们使用JSON从服务器返回客户端。现在你可能想知道,我们是否可以在两个方向上使用JSON?是的,我们可以,但是由于我们正在使用jQuery,它已经会将信息以格式化的形式发送到服务器,格式为$_GET或$_POST。
步骤1- 设置PHP文件
使用JSON,设置PHP文件变得简单多了。将我的上一个教程复制到一个新文件夹中。现在打开myserv.php,将所有代码替换为此代码
如果($_GET['action'] == 'getlink'){
$ld=loadInfo ($_GET['link']);
echo $ld;
}
函数loadInfo ($lnk){
switch($lnk){
case 1:
$list['name']='name john';
$list['desc']='我的描述 fsdfsd';
break;
case 2:
$list['name']='orians gate';
$list['desc']='bla for bla';
break;
case 3:
$list['name']='space 1999';
$list['desc']='whos there anyone';
break;
}
$str=json_encode($list);
return $str;
}
?>
请注意,我的数组现在有名称 "$list['name']",我还改变了这个
$str=json_encode($list);
这一行将我们的PHP数组编码为JSON字符串。
正如我在之前的教程中提到的,JavaScript不支持关联数组,但是我们可以使用JSON来模拟它们。
步骤2- HTML
打开test.html,将所有代码替换为以下内容
<style type="text/css">
#ajaxBox { background-color:#FFFF99; border:thin solid #FF0000; width:70%; height:50px;}
#formHeader{text-align:center; font-size:18px; color:#0000FF;}
#myform{text-align:center;}
style>
<script language="javascript" src="jquery-1.3.2.min.js">script>
<script language="javascript" src="jquery.delay.js">script>
<script language="javascript">
$(document).ready(function() { //Finish loading the entire page before processing any javascript
$("#hidden").hide();
$("#textfield").val("");
$("#textarea").val("");
$("#mylist a").bind("click", function() {
var hol=$(this).attr('myval');
var formContent ="action=getlink&link="+hol;
$.getJSON("myserv.php",formContent, function(json){
$("#textfield").val(json.name);
$("#textarea").val(json.desc);
$("#formHeader").text("Edit");
$("#ajaxBox").text("All info loaded OK");
}); //End json
}); //End click
}); //End ready function
script>
<div id="ajaxBox">div>
<div id="mylist">
<ul>
<li><a href="#" myval="1">cool sitea>li>
<li><a href="#" myval="2">new namea>li>
<li><a href="#" myval="3">great spacea>li>
ul>
div>
<div id="myform">
<div id="formHeader">Add Newdiv>
<form name="form1" method="post" action="">
<label>Name<input type="text" name="textfield" id="textfield">label><br /><br />
<label>Desc<textarea name="textarea" id="textarea" cols="45" rows="5">textarea>label>
form>
div>
现在尝试运行页面。不错吧?让我解释一下这些更改。这里真正重要的代码是这一段:
$.getJSON("myserv.php",formContent, function(json){
$("#textfield").val(json.name);
$("#textarea").val(json.desc);
$("#formHeader").text("编辑");
$("#ajaxBox").text("所有信息已成功加载");
}); //End json
我现在正在使用一个jQuery函数进行Ajax调用,并将数据作为JSON对象返回 ($.getJSON)。然后这些数据被放置在名为"json"的变量中,这模拟了一个关联数组。请注意这一行
$("#textfield").val(json.name);
我正在将表单元素"textfield"赋值为"json.name"。JSON很酷的一点是,除了模拟关联数组外,你还可以将其写得很深,例如
$list['country']='england';
$list['country']['city']='london';
$list['country']['city']['postal code']='12345';
等等
现在我们已经从服务器获取了正确格式的数据,我们现在可以用完全不同的方式来生成HTML,但我会把这个留到下一个教程。
步骤 3- 回顾
所以现在我们已经探讨了几种Ajax调用和jQuery函数的方法,让我们简要回顾一下。
$.load - 执行Ajax调用并返回HTML。
$.getJSON - 执行Ajax调用并返回格式为JSON的数据。
$.change - 在选择器上检测到变化。
。bind("click", function()) - 等待在一个选择器上的点击
$.hide - 隐藏一个选择器,如div、p等
$.show - 显示一个选择器