Ajax可以说 是目前最流行的 WEB 技术,它采用客户端脚本与 Web 服务器交换数据,也就是说,客户端的表单请求不是直接给 WEB 服务器,而是一些 Javascript 脚本,再通过 JS 内置的 xmlhttprequest 对象,异步的将请求发送给 WEB 服务器, WEB 服务器处理完之后再回发给 Javascript 脚本 , 然后动态的更新页面数据。由此可见 AJAX 并不是一种独立的技术,而是由 Javascript+DHTML+DOM+HTML 多种技术的组合 , 它少了等待服务器响应的时间,并且它可以使页面局部刷新,由此增强了用户体验。
当我们使用 AJAX 技术来做服务器端和客户端交互时,就必须要考虑数据操作的问题,我们比较常用的就是客户端向服务器端发送一些普通的文本或是名/ 值对参数, 因为服务器和服务器端语言可以轻松解释,但是 这种局限性还是很明显的,限制了请求字符长度。 Xml: XML 不是一种简洁、快速和节省空间的格式 , 因为它有一个“ 包装 - 解析 - 包装”(当向服务器发送 XML 的时候,更多的代码用于获取数据和包装成 XML ,而不是真正的传输数据)的过程,如果需要编写速度很快、看起来像桌面应用的程序, XML 可能不是最佳选择。 XML 不适合作为 Ajax 应用程序的请求数据格式,除了以下两种情况: 1 :服务器仅 接受 XML 请求 2:您正在调用一个仅接受 XML 或 SOAP 请求的远程 API 。但是它却适合做为服务器 响应 Ajax 应用程序的数据格式,原因是 服务器无法(以一种标准方式)发送名称 / 值对 ( 如果以名 / 值对回发给客户端后,客户端没有一种标准的方式去获取和解析)。 Json: 由于 Ajax 应用程序非常适合将纯文本发送给服务器端程序并对应地接收纯文本 , 但是没有生成文本的 API, 而 XML 又不适合做为请求的数据格式, JSON 的出现弥补了这一不足, JSON 就是文本,并且它的最大价值在于可以将 JavaScript 真的作为 JavaScript 而非数据格式语言进行处理。
1 :介绍JSON :
JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于 JavaScript Programming Language , Standard ECMA-262 3rd Edition - December 1999 的一个子集。 JSON 采用完全独立于语言的文本格式,但是也使用了类似于C 语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python 等)。这些特性使JSON 成为理想的数据交换语言。
JSON 建构于两种结构:
“ 名称/ 值” 对的集合(A collection of name/value pairs )。不同的语言中,它被理解为对象(object ) ,纪录(record ),结构(struct ),字典(dictionary ),哈希表(hash table ),有键列表(keyed list ),或者关联数组 (associative array )。
值的有序列表(An ordered list of values )。在大部分语言中,它被理解为数组(array )。
JSON 具有以下这些形式:
对象是一个无序的“‘ 名称/ 值’ 对” 集合。一个对象以“{” (左括号)开始,“}” (右括号)结束。每个“ 名称” 后跟一个“:” (冒号);“‘ 名称/ 值’ 对” 之间使用“,” (逗号)分隔。
例如:var people={"firstName": "Brett", "lastName":"McLaughlin", "email": “ brett@newInstance.com ”}
数组是值(value )的有序集合。一个数组以“[” (左中括号)开始,“]” (右中括号)结束。值之间使用“,” (逗号)分隔。
值(value )可以是双引号括起来的字符串(string )、数值(number) 、 true 、 false 、 null 、对象(object )或者数组(array )。这些结构可以嵌套。
例如: var json= {“people”:[{"firstName": "Brett", "lastName":"McLaughlin", "email": “ brett@newInstance.com ”},{"firstName": "dd", "lastName":"ss", "email": “ dd@ss.com ”}]}
2 :客户端使用 JSON
JSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包
2.1>:访问数据
只需用点号表示法来表示数组元素 :
例如: json . people [0].lastName
利用这样的语法,可以处理任何 JSON 格式的数据,而不需要使用任何额外的 JavaScript 工具包或 API 。
2.2>:修改 JSON 数据
正如可以用点号和括号访问数据,也可以按照同样的方式轻松地修改数据:
例如: json . people [1].lastName = "Rachmaninov";
2.3>:转换回字符串
如果不能轻松地将对象转换文本格式,那么所有数据修改都没有太大的价值
例如: String newJSONtext = people.toJSONString();
这样就行了!现在就获得了一个可以在任何地方使用的文本字符串,例如,可以将它用作 Ajax 应用程序中的请求字符串。
3 :服务器端使用 JSON
3.1> :将 JSON 文本发送给服务器( GET/POST )
3.2> :在服务器上解释 JSON
3.2.1>: 针对编写服务器端程序所用的语言,找到相应的 JSON 解析器 / 工具箱 / 帮助器 API 。
3.2. 2>: 使用 JSON 解析器 / 工具箱 / 帮助器 API 取得来自客户机的请求数据并将数据转变成脚本能理解的东西。
4 :Javascript解析 JSON字符串的性能分析
我们在使用 AJAX 来做服务器端和客户端交互的时候,一般的做法是让服务器端返回一段 JSON 字符串,然后在客户端把它解析成 JavaScript 对象。解析时用到的方法一般是 eval 或者 new function ,而目前 IE8 和 Firefox3.1 又内置了原生的 JSON 对象。那我们在实际使用的时候怎样从这三种方法里面来选择呢?面对众多的浏览器,哪种方式的性能是最好的呢?我在 51CTO 上查询到了以下的结论:
· IE6 、 7 使用 eval
· IE8 使用原生的 JSON 对象
· Firefox2 、 3 使用 new Function
· Safari4 使用 eval
· 其它浏览器下 eval 和 new Function 的性能基本一致
解析 Json 字符串时,不同的浏览器选择不同的方法。
当我们使用 AJAX 技术来做服务器端和客户端交互时,就必须要考虑数据操作的问题,我们比较常用的就是客户端向服务器端发送一些普通的文本或是名/ 值对参数, 因为服务器和服务器端语言可以轻松解释,但是 这种局限性还是很明显的,限制了请求字符长度。 Xml: XML 不是一种简洁、快速和节省空间的格式 , 因为它有一个“ 包装 - 解析 - 包装”(当向服务器发送 XML 的时候,更多的代码用于获取数据和包装成 XML ,而不是真正的传输数据)的过程,如果需要编写速度很快、看起来像桌面应用的程序, XML 可能不是最佳选择。 XML 不适合作为 Ajax 应用程序的请求数据格式,除了以下两种情况: 1 :服务器仅 接受 XML 请求 2:您正在调用一个仅接受 XML 或 SOAP 请求的远程 API 。但是它却适合做为服务器 响应 Ajax 应用程序的数据格式,原因是 服务器无法(以一种标准方式)发送名称 / 值对 ( 如果以名 / 值对回发给客户端后,客户端没有一种标准的方式去获取和解析)。 Json: 由于 Ajax 应用程序非常适合将纯文本发送给服务器端程序并对应地接收纯文本 , 但是没有生成文本的 API, 而 XML 又不适合做为请求的数据格式, JSON 的出现弥补了这一不足, JSON 就是文本,并且它的最大价值在于可以将 JavaScript 真的作为 JavaScript 而非数据格式语言进行处理。
1 :介绍JSON :
JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于 JavaScript Programming Language , Standard ECMA-262 3rd Edition - December 1999 的一个子集。 JSON 采用完全独立于语言的文本格式,但是也使用了类似于C 语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python 等)。这些特性使JSON 成为理想的数据交换语言。
JSON 建构于两种结构:
“ 名称/ 值” 对的集合(A collection of name/value pairs )。不同的语言中,它被理解为对象(object ) ,纪录(record ),结构(struct ),字典(dictionary ),哈希表(hash table ),有键列表(keyed list ),或者关联数组 (associative array )。
值的有序列表(An ordered list of values )。在大部分语言中,它被理解为数组(array )。
JSON 具有以下这些形式:
对象是一个无序的“‘ 名称/ 值’ 对” 集合。一个对象以“{” (左括号)开始,“}” (右括号)结束。每个“ 名称” 后跟一个“:” (冒号);“‘ 名称/ 值’ 对” 之间使用“,” (逗号)分隔。
例如:var people={"firstName": "Brett", "lastName":"McLaughlin", "email": “ brett@newInstance.com ”}
数组是值(value )的有序集合。一个数组以“[” (左中括号)开始,“]” (右中括号)结束。值之间使用“,” (逗号)分隔。
值(value )可以是双引号括起来的字符串(string )、数值(number) 、 true 、 false 、 null 、对象(object )或者数组(array )。这些结构可以嵌套。
例如: var json= {“people”:[{"firstName": "Brett", "lastName":"McLaughlin", "email": “ brett@newInstance.com ”},{"firstName": "dd", "lastName":"ss", "email": “ dd@ss.com ”}]}
2 :客户端使用 JSON
JSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包
2.1>:访问数据
只需用点号表示法来表示数组元素 :
例如: json . people [0].lastName
利用这样的语法,可以处理任何 JSON 格式的数据,而不需要使用任何额外的 JavaScript 工具包或 API 。
2.2>:修改 JSON 数据
正如可以用点号和括号访问数据,也可以按照同样的方式轻松地修改数据:
例如: json . people [1].lastName = "Rachmaninov";
2.3>:转换回字符串
如果不能轻松地将对象转换文本格式,那么所有数据修改都没有太大的价值
例如: String newJSONtext = people.toJSONString();
这样就行了!现在就获得了一个可以在任何地方使用的文本字符串,例如,可以将它用作 Ajax 应用程序中的请求字符串。
3 :服务器端使用 JSON
3.1> :将 JSON 文本发送给服务器( GET/POST )
3.2> :在服务器上解释 JSON
3.2.1>: 针对编写服务器端程序所用的语言,找到相应的 JSON 解析器 / 工具箱 / 帮助器 API 。
3.2. 2>: 使用 JSON 解析器 / 工具箱 / 帮助器 API 取得来自客户机的请求数据并将数据转变成脚本能理解的东西。
4 :Javascript解析 JSON字符串的性能分析
我们在使用 AJAX 来做服务器端和客户端交互的时候,一般的做法是让服务器端返回一段 JSON 字符串,然后在客户端把它解析成 JavaScript 对象。解析时用到的方法一般是 eval 或者 new function ,而目前 IE8 和 Firefox3.1 又内置了原生的 JSON 对象。那我们在实际使用的时候怎样从这三种方法里面来选择呢?面对众多的浏览器,哪种方式的性能是最好的呢?我在 51CTO 上查询到了以下的结论:
· IE6 、 7 使用 eval
· IE8 使用原生的 JSON 对象
· Firefox2 、 3 使用 new Function
· Safari4 使用 eval
· 其它浏览器下 eval 和 new Function 的性能基本一致
解析 Json 字符串时,不同的浏览器选择不同的方法。