转载:http://www.cnblogs.com/haogj/archive/2011/12/01/2271098.html

JSON 格式

json 是 Ajax 中使用频率最高的数据格式,在浏览器和服务器中之间的通讯可离不开它。

JSON 的格式说明可以在可以这里看到,非常详细,还是中文的。

 JSON 格式说明

需要特别注意的是,在 JSON 中的属性名是需要使用引号引起来的。

jQuery 中使用 JSON

jQuery 是现在使用广泛的脚本库,那么,在 jQuery 中如何使用 JSON 呢?

解析 JSON

在 jQuery 中已经提供了对于解析 JSON 的内在支持,

jQuery.parseJSON 函数提供了解析的支持,详细的说明见这里

var obj = jQuery.parseJSON('{"name":"John"}');  
alert( obj.name === "John" );

使用对象生成 JSON 格式串

在 jQuery 中并没有提供直接将普通的 JavaScript 对象转换为 JSON 串的方法,可以使用下面的扩展库来完成。

jquery-json 扩展库

这个库用来扩展 jQuery ,对于 JSON 的使用,扩展了两个方法。

toJSON 方法用来将一个普通的 JavaScript 对象序列化为 JSON 串。

var thing = {plugin: 'jquery-json', version: 2.3};    
var encoded = $.toJSON( thing ); // '{"plugin":"jquery-json","version":2.3}'

evalJSON 方法将一个 JSON 串解析为一个普通的 JavaScript 对象。

var thing = {plugin: 'jquery-json', version: 2.3};    
var encoded = $.toJSON( thing ); // '{"plugin":"jquery-json","version":2.3}'
var name = $.evalJSON( encoded ).plugin; // "jquery-json"
var version = $.evalJSON(encoded).version; // 2.3

这个扩展的下载地址:http://code.google.com/p/jquery-json/

使用 jQuery 配合 WCF

客户端

jQuery 中的 $.post 可以直接向服务器发出请求,将服务器返回的数据按照 JSON 方式进行解析,不过,需要注意下面几点:

请求的内容类型必须为  json 格式,这可以通过上面的 jQuery-json 扩展库来完成,需要特别注意的在请求的 contentType 也必须使用  text/json 进行说明,默认的 post 使用普通的名值对方式请求,因此 contentType 是: application/x-www-form-urlencoded,可以通过 $.ajaxSetup 来进行设置:

// Ajax 设置  
$.ajaxSetup({ contentType: 'text/json' });

这样,请求的内容类型就设置为需要的类型。

其次,实际的请求内容必须使用 JSON 方式,这可以通过扩展库的 $.toJSON 来实现,例如:

$.toJSON({ x: 2, y: 3 })

这样,如果服务器端提供了一个服务方法 Sum,定义如下:

public int Sum(int x, int y)  
{
return x + y;

就可以如下调用了。注意,WCF 返回的数据在属性 d 中。

// Ajax 设置  
$.ajaxSetup({ contentType: 'text/json' }); $("#wcfBtn").click(function () {
$.post("Service1.svc/Sum", $.toJSON({ x: 2, y: 3 }), function (data) {
alert(data.d);
});
});

服务器端的配置

首先,为服务增加标签:[System.ServiceModel.Activation.AspNetCompatibilityRequirements(
    RequirementsMode = System.ServiceModel.Activation.AspNetCompatibilityRequirementsMode.Allowed)]

然后,在网站的配置文件中,如下配置。

<system.serviceModel>  
<!-- 为了支持在浏览器端调用 WCF 服务的特定配置 -->
<serviceHostingEnvironment aspNetCompatibilityEnabled="true">
<serviceActivations> <!-- relativeAddress 服务的地址
service 实现服务的类型,全名,包含命名空间,甚至程序集
factory 是 WCF 系统提供,直接使用
--> <add relativeAddress="Service1.svc" service="MServer.Service1" factory="System.ServiceModel.Activation.WebScriptServiceHostFactory"
/>
</serviceActivations>
</serviceHostingEnvironment> <behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>

jQuery 中使用 JSON的更多相关文章

  1. jQuery中读取json文件示例代码

    json文件是一种轻量级的数据交互格式.一般在jquery中使用getJSON()方法读取,具体示例代码如下,感兴趣的朋友可以参考下哈,希望可以帮助到你   json文件是一种轻量级的数据交互格式.一 ...

  2. jquery中的json操作

    $(function() { var json = [ { "id" : "1", "tagName" : "apple" ...

  3. jQuery中读取json文件

    json文件是一种轻量级的数据交互格式.一般在jquery中使用getJSON()方法读取. $.getJSON(url,[data],[callback]) url:加载的页面地址 data: 可选 ...

  4. jquery 中json数组的操作(转)

    在jquery中处理JSON数组的情况中遍历用到的比较多,但是用添加移除这些好像不是太多. 今天试过json[i].remove(),json.remove(i)之后都不行,看网页的DOM对象中好像J ...

  5. JavaScript jQuery 中定义数组与操作及jquery数组操作

    首先给大家介绍javascript jquery中定义数组与操作的相关知识,具体内容如下所示: 1.认识数组 数组就是某类数据的集合,数据类型可以是整型.字符串.甚至是对象Javascript不支持多 ...

  6. JavaScript jQuery 中定义数组操作及数组操作

    1.认识数组 数组就是某类数据的集合,数据类型可以是整型.字符串.甚至是对象 Javascript不支持多维数组,但是因为数组里面可以包含对象(数组也是一个对象),所以数组可以通过相互嵌套实现类似多维 ...

  7. JavaScript jQuery 中定义数组与操作及jquery数组操作 http://www.jb51.net/article/76601.htm

    首先给大家介绍javascript jquery中定义数组与操作的相关知识,具体内容如下所示: 1.认识数组 数组就是某类数据的集合,数据类型可以是整型.字符串.甚至是对象Javascript不支持多 ...

  8. jQuery中json对象与json字符串互换

    json字符串转json对象:jQuery.parseJSON(jsonStr); json对象转json字符串:JSON.stringify(jsonObj); 根据“|”把字符串变成数组.spli ...

  9. jquery eval解析JSON中的注意点介绍

    在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式:使用eval()函数.使用Function对象来进行返回解析,下面有个示例,感兴趣的朋友可以参考下   在JS中将JSON的字符串解析 ...

随机推荐

  1. 常用工具类,文件和内存的大小获取,shell脚本的执行

    /* * Copyright (C) 2012 The Android Open Source Project * * Licensed under the Apache License, Versi ...

  2. tcl/tk demo

    环境及版本说明: OSX10.9 tclsh -> tclsh8.5 wish -> wish8.5 查看本机运行环境: which wish; 2 /usr/bin/wish which ...

  3. C语言基础11

    函数指针的定义: 函数类型 (标识符 指针变量名)(形参列表) void  printHello( ); void printHello( ){ printf("hello world!!! ...

  4. python连接redis文档001

    Installation redis-py requires a running Redis server. See Redis’s quickstart for installation instr ...

  5. MySQL validate_password 插件

    从创建用户说起: 如我们在mysql中可以用grant all on *.* to userd@'localhost' identified by '123'; 来创建一个userd用户,虽然用户是创 ...

  6. SQL Server 创建索引的 5 种方法

    前期准备: create table Employee (            ID int not null primary key,            Name nvarchar(4),  ...

  7. Java Web 中 过滤器与拦截器的区别

    过滤器,是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的 action进行业务逻辑,比如过滤掉非法u ...

  8. 【POJ 3009 Curling2.0 迷宫寻径 DFS】

    http://poj.org/problem?id=3009 模拟冰壶的移动,给出到达终点的最少投掷次数(不可达时为-1). 具体移动规则如下: 每次选四个方向之一,沿此方向一直前进,直到撞到bloc ...

  9. windows2003 64位注册码 序列号 激活码

    Windows 2003 R2 64bit Enterprise VOL Edition 企业版 MR78C-GF2CY-KC864-DTG74-VMT73 VPT7T-77D38-KWVW2-2G3 ...

  10. 自制证书搭建https服务

    第一步,自制CA证书和Server证书,私钥 自制CA私钥 openssl genrsa -des3 -out ca.key 4096 自制CA证书 openssl req -new -x509 -d ...