今天来说说jquery的json插件, json(javascript object notation)是一种轻量级的数据交换格式, 易于阅读和编写, 同时也易于机器解析和生成. 关于更多json的知识可以查看这里. jquery的json插件查看这里
这里以前几天写的一个程序为例来说明一下.
首页现在HTML页面中引用2个JS文件
<script type="text/javascript" src="/js/jquery.json.js"></script>
假设我们现在有一个全局文字对象变量
12
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 // 全局文字对象变量
gts = { "p":[],
"imgsrc":"",
"avatar":{"show":"0", "width":"73", "height":"85", "x":"0", "y":"0"},
"shantu":{"make":"0", "type":"1", "val":""}
};
// 默认文字对象
dt = function(_txtid, _cnname) {
this.txtid = _txtid;
this.cnname = _cnname;
this.fontface = "fzzhiyi.ttf";
this.fontsize = "14";
this.fontcolor = "#FF0099";
this.altercolor = "#ffffff";
this.x = "0";
this.y = "0";
this.wordlimit = "10";
this.textdirection = "0";
this.effect = "0";
this.jump = "0";
this.txt = "示范文字";
this.isstroke = "0";
this.strokecolor = "#ff0000";
this.borderx = "1";
this.bordery = "1";
this.angle = "0"
}
// 文字对象数组中添加一个默认文字对象
gts.p.push(new dt('txt1', '文字1'));
在前台页面通过AJAX向后台PHP脚本POST数据:
2
3
4
5
6
7 // 请注意发送过去的p参数是如何转换为json格式的=>$.toJSON(gts)
$.post('Handler.php', {'action':'preview', 'p':$.toJSON(gts), 'avPath':$('#avPath').val()}, function(res){
// 解码json使用$.evalJSON(res)
var obj = $.evalJSON(res);
// .....处理结果
alert(obj.success);
});
后台页面在接收到数据后是如何处理的呢? 请看PHP代码
12
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 // ...这里忽略参数处理代码
if ($action == 'preview') {
// json_decode函数很好很强大. 注意true参数, 将直接返回数组
$params = json_decode(stripSlashes($_POST['p']), true);
$imgsrc = $params['imgsrc'];
$img = new Imagick('../'.$imgsrc);
$wh = $img->getImagePage();
$width = $wh['width'];
$height = $wh['height'];
$txtParams = $params['p'];
// var_dump($txtParams);
foreach($txtParams as $k => $v) {
// ....
}
// ...... 返回结果
$res = array('success' => 'ok');
echo json_encode($res);
明白了吗? POST过来的参数经过json_decode解码后为一个数组, 然后我们就可以直接使用这个数组了.
其实说来说去就是$.toJSON(str), $.evalJSON(str), json_decode(), json_encode()四个方法的配对使用问题.很简单但是在实际应用中却非常实用.
本文介绍如何使用jQuery的JSON插件实现前后端数据交互。通过具体示例展示如何利用$.toJSON和$.evalJSON方法将JavaScript对象转换为JSON格式,并通过PHP的json_decode和json_encode函数处理这些数据。

5497

被折叠的 条评论
为什么被折叠?



