1.js如何解析后台传过来的json字符串?JSON.parse()使用方法

版权声明:https://blog.csdn.net/weixin_41585557 https://blog.csdn.net/weixin_41585557/article/details/86570138

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';\n";

}

?>

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","[email protected]"]];

alert(arr[0]); alert(arr[1]); alert(arr[2][0]);

alert(arr[2][1]);

}

getArray();

</script>

如果PHP数组的键都是数字,那么json_encode()返回一个数组形式的Json,如果PHP数组的键全是字符串。那么json_encode()就会返回一个对象形式的Json。

转自:https://www.cnblogs.com/redfire/p/7702108.html

猜你喜欢

转载自blog.csdn.net/weixin_41585557/article/details/86570138