开发者社区> 问答> 正文

请问 前后端JSON具体是如何通信的?

最近在学习JSON,查阅了网上很多有关的文章,这些文章大多数是解释JSON是什么.现在对JSON是什么我也能理解了,但不理解JSON是怎么在前后端之间具体是怎么处理和交互的?

我的理解是,在前端,例如表单内容为{"username":"abc",""password":123},首先是用js把json转化成字符串形式的' {"username":"abc",""password":123} ',然后通过GET或POST传送到后端。

后端以python为例,需要先找到这个字符串,然后利用json.loads()来把这段字符串转化成字典,然后进行下一步操作。

请问我的理解正确吗?

如果不正确,请告知正确答案,如果有简单的demo更好。

展开
收起
爵霸 2016-03-05 08:40:13 3403 0
1 条回答
写回答
取消 提交回答
  • 浏览器端提交数据的时候一般都是通过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对象进行操作.

    2019-07-17 18:52:50
    赞同 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载