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","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。

js如何解析后台传过来的json字符串的更多相关文章

  1. js解析后台传过来的json

    java ,action public void print(String rs){ PrintWriter out; try { HttpServletResponse response = Ser ...

  2. Echart实现多个y轴,坐标轴的个数及名称由后台传过来的json数据决定。

    yAxis: function(){ var yAxis=[]; for(var i=0;i<legend1.length;i++){ var item={ name:legend1[i], t ...

  3. js如何下载后台传过来的base64文件

    一.<a>标签的作用 相信大部分人都知道<a>链接再简单不过了,跳转嘛,跳转到另外一个页面,这谁不知道. 当然这这是一部分, <a> 标签定义超链接,用于从一个页面 ...

  4. JS前端取得并解析后台服务器返回的JSON数据的方法

    摘要:主要介绍:使用eval函数解析JSON数据:$.getJSON()方法获得服务器返回的JSON数据 JavaScript eval() 函数 eval(string) 函数可计算某个字符串,并执 ...

  5. 修改后台传过来的json数据中对象的属性

    前言 今天在实习中遇到的一个小问题,后端传过来的一个json数据结构,但是对象中的属性名跟我需要的不一样(因为我是渲染echarts中的数据,属性名要一样) 这是后台传过来的数据: 需求是我需要把属性 ...

  6. js ajax向后台传数组可以直接拼接传输

    ajax向后台传数组是可以直接传的,写法如下 var ids = [ ]; $(dom1).each(function(){ ids.push($(this).val()); }); var  use ...

  7. 怎么把后台传过来的Json拼成table 用Jquery ajax()

    页面上的表格定义:<table id="tableId"></table> js中的代码:var $parent0 = $('#tableId);//获取页 ...

  8. 使用Jackson解析首字母大写的json字符串

    Jackson在解析返回的json字符串时始终报错,纠结很久之后才找到原因,原来是是由于json字符串中的字母都是首字母大写,导致jackson找不到相应的KEY. 在项目中经常使用从服务器获取的数据 ...

  9. Thymleaf js直接获取后台传过来的对象或者对象的属性以及map

    简单说明:第一次接触thymleaf模板,对于thymleaf在js中如何获取后台传递过来的值,真的挺简单的,记住就行了 代码: 后台代码: //传递一个org对象给jspublic String t ...

随机推荐

  1. android textview xml 属性设置

     android:ems 设置TextView的宽度为N个字符的宽度. android:maxems 设置TextView的宽度为最长为N个字符的宽度.与ems同时使用时覆盖ems选项. andr ...

  2. Thrift之c++实例

    一.c++实例 1.下载与安装thrift工具 http://thrift.apache.org/download/ .服务端代码 1).新建vc工程. 2).将上面的文件拷贝到工程目录下,Test_ ...

  3. SVG 总结

    //文件名:11.svg<?xml version="1.0" encoding="UTF-8" ?> <!--XML NameSpace:名 ...

  4. Games Delphi developers play

    Original link: Games Delphi developers play   Delphi game developers are stupid people having too ma ...

  5. 无法打开包括文件:“iostream.h”

    把#include<iostream.h>改为:#include<iostream>using namespace std; #include<iostream.h> ...

  6. display:box属性

    在移动端开发的时候,圣杯布局,弹性盒,是我们经常会用得到的,W3C很久以前就有一个display:box属性 flex是最新的,但是在实际的浏览器测试中,display: flex 不能完全替代dis ...

  7. netcat 瑞士军刀

    netcat被誉为网络安全界的‘瑞士军刀’,一个简单而有用的工具,透过使用TCP或UDP协议的网络连接去读写数据.它被设计成一个稳定的后门工具,能够直接由其它程序和脚本轻松驱动.同时,它也是一个功能强 ...

  8. C#进阶之路(七)反射的应用

    反射在C#中的应用还是很多的,但它对代码的性能有一定影响. 反射的性能: 使用反射来调用类型或者触发方法,或者访问一个字段或者属性时clr 需要做更多的工作:校验参数,检查权限等等,所以速度是非常慢的 ...

  9. AtCoder Grand Contest 017 题解

    A - Biscuits 题目: 给出 \(n\) 个物品,每个物品有一个权值. 问有多少种选取方式使得物品权值之和 \(\bmod\space 2\) 为 \(p\). \(n \leq 50\) ...

  10. React组件性能优化总结

    性能优化的思路 影响网页性能最大的因素是浏览器的重排(repaint)和重绘(reflow). React的Virtual DOM就是尽可能地减少浏览器的重排和重绘. 从React渲染过程来看,如何防 ...