最近在学习JSON,查阅了网上很多有关的文章,这些文章大多数是解释JSON是什么.现在对JSON是什么我也能理解了,但不理解JSON是怎么在前后端之间具体是怎么处理和交互的?
我的理解是,在前端,例如表单内容为{"username":"abc",""password":123},首先是用js把json转化成字符串形式的' {"username":"abc",""password":123} ',然后通过GET或POST传送到后端。
后端以python为例,需要先找到这个字符串,然后利用json.loads()来把这段字符串转化成字典,然后进行下一步操作。
请问我的理解正确吗?
如果不正确,请告知正确答案,如果有简单的demo更好。
浏览器端提交数据的时候一般都是通过GET或者POST方式来传输,比如/post.php?action=edit&id=1024,拿PHP来说,就是直接用$_GET和$_POST等超全局变量在任何地方访问这些用户输出的参数,比如取参数action的值,$_GET['action'].如果你是用PHP写CGI程序,那么你就需要自己获取这些参数,大概就是先URL解码,然后按&分割,再按=分割,获取参数的名和值.
<?php
$tmp = explode('&', urldecode('action=edit&id=1024'));
$get = array();
foreach($tmp as $v) {
$tmp2 = explode('=', $v);
foreach($tmp2 as $v2) {
$get[$tmp2[0]] = $tmp2[1];
}
}
print_r($get);
<form accept-charset="utf-8" action="info.php" method="GET">
<input type="checkbox" name="os[]" value="Windows" />Windows
<input type="checkbox" name="os[]" value="Ubuntu" />Ubuntu
<input type="checkbox" name="os[]" value="Mac" />Mac
<input type="submit" name="submit" value="提交" />
</form>
上面的表单,如果勾选了3个复选框,那么提交后就对应这样的GET请求(一个数组):
info.php?os[]=Windows&os[]=Ubuntu&os[]=Mac&submit=提交
$_GET['os']:
Array
(
[0] => Windows
[1] => Ubuntu
[2] => Mac
)
如果你用POST方式的话可以在Firebug之类的工具的网络里看到这个信息,而不像GET显示在URL,并记录到Web服务器的日志里.
一般是浏览器端通过AJAX访问服务器端获取数据时,服务器端才返回JSON数据,而不是浏览器端向服务器端提交JSON数据.JSON是JS里的一种数据结构,就像数组至于PHP,而PHP可以通过json_encode/json_decode在数组和JSON之间转换,PHP里的数组不区分数字数组和字典(键值对/哈希表),PHP可以用数组保存从数据库中查出的结果集,经过数组处理后json_encode成JSON串,然后返回给浏览器.浏览器端可以用jQuery.parseJSON(data)或JSON.parse(data)或eval('(' + data + ')')把返回的JSON串转成JS对象进行操作.
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。