前记:以前就做过JSON 的例子很久没用给忘了,今天同事要用jquery/AJAX 来做报表让我帮忙还真有点麻烦。所以开头一章筒单调用
介绍
对象与json(JavaScript Object Notation)
JSON具有以下这些形式:
对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。
数组是 值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔值(value)可以是双引号括 起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。
字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。
对象用{}
数组用[]
var Users=[
{"userID":"1","Name":"Froog","friends":["Jack","Zack","Justin"]},
{"userID":"2","Name":"Zack","friends":["Jack","Zack","Justin"]},
{"userID":"3","Name":"Justin","friends":["Jack","Zack","Justin"]}
];
转换JSON字符到Object
var JsonString = '{"userID":"2","Name":"Froog","friends":["Jack","Zack","Justin"]}';
var User2 = eval('(' + JsonString + ')');
alert(User2.Name);
alert(User2.friends[0]);
//引用 json.js 实现JSON字符与Object相互转换。
var obj = JsonString.parseJSON();
alert(obj.toJSONString());
。net jquery/AJAX调用时场景
//AJAX 中使用JSON
1、先建立一个webScript服务
2、在web服务类前面标记 [System.Web.Script.Services.ScriptService]
3、webScript服务方法返回一个符合JSON格式的字符串
4、执行jquery 的文事件$(document).ready ,
5、通过$()选择器绑定对像
6、在对象事件里面发送ajax请求 $.ajax();
7、ajax data:传入到服务器的参数,键值如: data:"{TM:'ok'}",
8、 把服务器JSON转成js的obj对象 var obj=eval(data.d);
9、这样JSON就成为JS 的object对象了
webScript服务方法
[WebMethod]
public string HelloWorld()
{
return "{name:'hello word!'}";
}
function getResult()
{
$(document).ready(function(){
$.ajax({
type: "POST",
url: "?Json=true",
data:"{TM:'ok'}", //无参也必须指定一个参数
success: function(msg){
var obj=eval(data.d);
alert( obj.Name);
}
});
});
从服务器来的是json数组
如[{id:1,name:"小子"},{id:2,name:"大子"}]
在客户端需要eval("("+json数组对象+")"); 这样用javascript运行一次
从服务来的是json数据转成javascript的json
1.var data=eval(data); eval()函数没有任何作用,就是运行起javascript的代码
2.jquery中$.get("url",null,function(data),"json") 写上"json"这个参数那么返回的数据将作为json处理
vs2005
如:单个json对象 var data=eval(data.d);
如:数组json对象 var data=eval("("+data.d+")") ;
注vs2008一定要加.d才能正常将jquery的json转成javascript的json对象
如:单个json对象 var data=eval(data.d);
如:数组json对象 var data=eval("("+data.d+")") ;