• js如何解析后台传过来的json字符串


    1.js如何解析后台传过来的json字符串?

    注意:js是无法直接接收和使用json或者Php的数据,用的话会出现undefined,所以要转换一下。
    方式一:
    var str = '{"rows":[{"ID":0,"登录账号":"admin","登录时间":"/Date(1446772997000)/","登录地点":"河北石家庄","登录IP":"115.181.15.99"}]}';
    var obj = eval("(" + str + ")");
    console.log(obj);
    var ddd = function(str){
    return eval("(" + str + ")");
    }
     
    var str = '{"rows":[{"ID":0,"登录账号":"admin","登录时间":"/Date(1446772997000)/","登录地点":"河北石家庄","登录IP":"115.181.15.99"}]}';
     
    var obj = ddd(str);
    var rows = obj["rows"];
    for(var i = 0; i < rows.length; i++){
    var ri = rows[i];
    for(var k in ri){
    console.log(k + ": " + ri[k]);
    }
    }
     
    方式二:
    var data ="{}"; //json字符串
    var obj = JSON.parse(data);
    alert(obj.rows);
     
    JSON.parse()和eval()的区别

    json格式非常受欢迎,而解析json的方式通常用JSON.parse()但是eval()方法也可以解析,这两者之间有什么区别呢?

    JSON.parse()之可以解析json格式的数据,并且会对要解析的字符串进行格式检查,如果格式不正确则不进行解析,而eval()则可以解析任何字符串,eval是不安全的。

    比如下面的字符串:

    var str = 'alert(1000.toString())';eval(str);
    JSON.parse(str);

    用eval可以解析,并且会弹出对话框,而用JSON.parse()则解析不了。 其实alert并没有什么坏处,可怕的是如果用恶意用户在json字符串中注入了向页面插入木马链接的脚本,用eval也是可以操作的,而用JSON.parse()则不必担心这个问题。

    注意:某些低级的浏览器尚不支持JSON.parse(),可以到 https://github.com/douglascrockford/JSON-js/blob/master/json2.js 下载。

     

    js如何接收PHP数组

    1.如果你理解JSON数据格式的话,这个问题就异常简单:
    <?php
    $a =array('1','2','3');
    ?>
    <script language="javascript">
    var obj =eval('<?php echo json_encode($a);?>');
    alert(obj[0]);
    alert(obj[1]);
    alert(obj[2]);
    </script>
     
    2.如果不懂JSON,采用传统的方法:
     
    <script language="javascript">
    var arr =new Array();
    <?php
    foreach($a as $key=>$value){
    echo "arr[$key] ='$value'; ";
    }
    ?>
    alert(arr[0]);
    </script>
    如果是直接通过按钮点击传递的话:
    先在JS里面定义一个全局变量,将PHP数组转换后存储到这个JS变量中,在下文中直接传递这个JS变量。例如:
    <script language='javascript'>var obj=eval('<?php echo json_encode($a);?>');</script>
    下下文的HTML中:
    <button type="submit" name="action" onClick="aaa(obj)" >分配</button>
     
    PHP数组和Json之间的转换
    之所以要用到Json,很多时候是因为使用ajax对象时,程序与JS函数之间的数据交互。因为JS不认识PHP中的数组,PHP也不认识JS中的数组或对象。Json很好的解决了这个问题注意:对象和数组两种形式在JS中的调用时不一样啊,对象用“.”调用,数组用下标[0]、[1]调用。还要注意在传递Json串时string类型的值要用引号括起来。

     

    <script type="text/javascript"> function getArray()
    {
    var arr = ["Jarry",23, ["www.xiaophper.com","wxyh_999@126.com"]];
    alert(arr[0]); alert(arr[1]); alert(arr[2][0]);
    alert(arr[2][1]);
    }
    getArray();
    </script>
    如果PHP数组的键都是数字,那么json_encode()返回一个数组形式的Json,如果PHP数组的键全是字符串。那么json_encode()就会返回一个对象形式的Json。

     

  • 相关阅读:
    关于token的理解
    JavaScript 中 call()、apply()、bind() 的用法
    常用JS整理
    js里面for循环的++i与i++
    前端命名规范
    H5混合开发app常用代码
    jquery知识巩固
    水平垂直居中(固定宽不固定宽)
    css3新属性运用
    bug笔记(pc)
  • 原文地址:https://www.cnblogs.com/redfire/p/7702108.html
Copyright © 2020-2023  润新知