dojo 加载Json数据
1、今天研究了dojo datagrid加载WebService后台传上来的数据。研究来研究去发现他不是很难。用谷歌多调试一下就好了。
2、看很多例子,这个例子能够更好的帮我解决问题:https://dojotoolkit.org/documentation/tutorials/1.10/dojo_data/index.html
往下滑动页面会看到类似于下面例子的截图:
3、框架都好说,把字段对应上问题不大,主要是数据。我开始是直接将WebService传出来的JSON数据传入给Memory的data,导致各种错误。 后来看了上面这个例子之后,然后用谷歌调试,发现了问题的解决办法,原来Memory中的data是一个array数组对象,而我传给它的只是json字符串,所以导致各种报错,如下图所示:
4、这样我只要把我的JSON数据反序列话成Array数组对象问题就解决啦,我的完整代码如下:
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Demo: Store Adapter</title>
<link rel="stylesheet" href="style.css" media="screen">
<link rel="stylesheet" href="http://localhost/dojoroot/dojox/grid/resources/claroGrid.css" media="screen">
<style>
#grid {
width:100%;
}
</style>
</head>
<body class="claro">
<h1>Demo: Store Adapter</h1>
<div id="grid">
</div>
<!-- load dojo -->
<script src="http://localhost/dojoroot/dojo/dojo.js"></script>
<script type="text/javascript" src="http://localhost/dojoroot/jquery-3.1.0.js"></script>
<script> //好友信息
$.ajax({
type:"post",
contentType:"application/json;charset=UTF-8",
url:"http://localhost/StuManager/StuManWService.asmx/GetStuAllInfo",
dataType:"json",
success:function(result)
{
//showinfo(result.d)
var persons = eval("("+result.d+")"); //将WebService传过来的JSON数据反序列化成Array数组。
showinfo(persons);
}
});
function showinfo(ss)
{ var data, grid;
require([
"dojo/store/Memory",
"dojo/data/ObjectStore",
"dojox/grid/DataGrid",
"dojo/domReady!"
], function(Memory, ObjectStore, DataGrid){
var objectStore = new Memory({
data:ss
});
grid = new DataGrid({
store: ObjectStore({objectStore: objectStore}),
structure: [
{ name: "学号", field: "学号", width: "5%" },
{ name: "姓名", field: "姓名", width: "5%" },
{ name: "密码", field: "密码", width: "5%" },
{ name: "性别", field: "性别", width: "5%" },
{ name: "星座", field: "星座", width: "5%" },
{ name: "年龄", field: "年龄", width: "5%" },
{ name: "班级", field: "班级", width: "5%" },
{ name: "所在班级年份", field: "所在班级年份", width: "5%" },
{ name: "生日", field: "出生日期", width: "5%" },
{ name: "电话号码", field: "电话号码", width: "5%" },
{ name: "家庭住址", field: "家庭住址", width: "5%" },
{ name: "QQ号码", field: "QQ号码", width: "5%" },
{ name: "备注", field: "备注", width: "5%" }
]
}, "grid");
grid.startup();
});
};
</script>
</body>
</html>
PS1:说一下DataGrid显示乱码的问题,如下图:
解决办法:因为我的js文件和html文件是分开的,把js文件用记事本打开,然后另存为UTF-8格式的文件显示就正常了,如下图所示:
PS2:如果字段名和数组中的列名没有对应上,该列就会显示很多冒号,如下图所示:
3、加载JSON文件
JSON文件如下:
{
"items": [
{
"bats": "R",
"weight": 180.0
},
{
"bats": "R",
"weight": 165.0
}
]
}
JS代码如下:
<script src="../dojoroot/dojo/dojo.js" data-dojo-config="isDebug: true, async: true"></script>
<script> require([
"dojox/grid/DataGrid",
"dojo/store/Memory",
"dojo/data/ObjectStore",
"dojo/request",
"dojo/domReady!"
], function(DataGrid, Memory, ObjectStore, request){
var grid, dataStore;
request.get("data/config.json", {
handleAs: "json"
}).then(function(data){
dataStore = new ObjectStore({ objectStore:new Memory({ data: data.items }) });
});
}); </script>
dojo 加载Json数据的更多相关文章
- hive加载json数据解决方案
hive官方并不支持json格式的数据加载,默认支持csv格式文件加载,如何在不依赖外部jar包的情况下实现json数据格式解析,本编博客着重介绍此问题解决方案 首先创建元数据表: create EX ...
- 扩展JQUERY 表单加载JSON数据
$.fn.extend({ //表单加载json对象数据 setForm : function (jsonValue) { var obj = this; $.each(jsonValue, func ...
- PHP+MySQL+Easyui tree菜单从后台加载json数据(一)
实现功能:从数据库加载出所有的数据库名,相应的数据库加载对应的数据库表名 原理:(首先看一下参考手册的内容) 异步加载Tree tree 支持内置的异步加载模式,用户创建一个空的tree,然后定义一个 ...
- 【Android】Handler的应用(一):从服务器端加载JSON数据
最终目的 以JSON的形式,将数据存入服务器端. 在Android中,以Handler加载显示大批量文字. 在此以加载金庸小说<天龙八部(新修版)>为例(2580480 字节). 以tom ...
- JQuery和原生JS跨域加载JSON数据或HTML。
前提:有时候需要在网页上,加载另一个网站上的数据.或者加载另一个网站上的一个页面.Js的Ajax请求不具备跨域功能,可以使用JQuery来实现. 网页端JS代码: $(function () { $. ...
- BootStrap的表格加载json数据,并且可以搜索,选择
2018.4.11日更新,8号的时候我推荐去官网下载,但是那个版本不知道为什么我无法使用 $table.bootstrapTable('getSelections'); 无论如何...然后我尝试着更换 ...
- EasyUI datagrid动态加载json数据
最近做一个项目,要求是两张张表可能查找出10多种不同的结果集. 如果想只用一个表格就把全部的结果不同的显示出来那么就肯定不同使用固定的字段名字,要通过动态加载后台返回来的数据把它显示出来就必须动态加载 ...
- vue通过ajax加载json数据
HTML <ul id="Hanapp"> <li class="styVue" v-for="item in actList&qu ...
- MVC4中EasyUI Tree异步加载JSON数据生成树
1,首先构造tree接受的格式化数据结构MODEL /// <summary> /// 定义EasyUI树的相关数据,方便控制器生成Json数据进行传递 /// </summar ...
随机推荐
- CC3000 主机驱动API介绍
CC3000作为是一种简单集成,简单实用的无线宽带设备,她集成了完整的802.11协议栈,802.11个人安全请求:IP网络协议栈,CC3000主机驱动对CC3000硬件访问时很轻松的.CC3000逐 ...
- Python字典实现三级菜单
################################################ # Task Name: 三级菜单 # # Description:打印省.市.县三级菜单 # # 可 ...
- [zz] 英文大写缩写前要加THE吗
http://zhidao.baidu.com/link?url=BvXRdoE0OjGh46rlodbyM3wirORSGGcnYGq0xYEtcoIMTkLnXd4Hl3iMLbKNb2npRdI ...
- 7个混合式HTML5移动开发框架
在这个时间开始学习移动开发真是最好不过了,每个人应该都有一些移动应用的创意,而且你并不需要任何的原生应用编程经验,你只需要一些HTML的相关知识,懂一些CSS和JavaScript就够了.如果你总听别 ...
- Android无法收到指定广播的问题总结
首先是应用中不能只有一个广播,必须有一个activity或者service(这种情况比较复杂参考http://www.cnblogs.com/welcoming/p/4120497.html) 简单的 ...
- int和NSInteger区别
NSInteger会自动根据操作系统的位数(32或者64位)返回最大的类型 查到c语言中,int和long的字节数是和操作系统指针所占位数相等. 但c语言中说,long的长度永远大于或等于int ob ...
- 【Android 系统开发】Android JNI/NDK (三) 之 JNIEnv 解析
jni.h文件 : 了解 JNI 需要配合 jni.h 文件, jni.h 是 Google NDK 中的一个文件, 位置是 $/Android-ndk-r9d/platforms/android-1 ...
- 10. windows与linux文件共享
1. 关闭防火墙 /etc/init.d/iptables stop 2. C:\Users\cfm>ping 192.168.232.131 正在 Ping 192.168.232.131 具 ...
- c语言 sscanf()函数
sscanf()函数用于从字符串中读取指定格式的数据,其原型如下: int sscanf (char *str, char * format [, argument, ...]); [参数]参数 ...
- 服务器间打通ssh无密钥
1 打通无密钥 配置HDFS,首先就得把机器之间的无密钥配置上.我们这里为了方便,把机器之间的双向无密钥都配置上. (1)产生RSA密钥信息 ssh-keygen -t rsa 一路回车,直到产生一个 ...