Ajax提高篇(5)使用JSON 进行数据传输

前端之家收集整理的这篇文章主要介绍了Ajax提高篇(5)使用JSON 进行数据传输前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在异步应用程序中发送和接收信息时,可以选择以纯文本和 XML 作为数据格式。Ajax 的另一种有用的数据格式 JavaScript Object Notation(JSON),使用它更轻松地在应用程序中移动数据和对象。
在许多异步应用程序中如何恰当地使用纯文本和简单的名称/值对。可以将数据组合成下面这样的形式:

mailto:firstName=Brett&lastName=McLaughlin&email=brett@newInstance.com

这样就行了,不需要再做什么了。实际上,Web 老手会意识到通过 GET 请求发送的信息就是采用这种格式。
如果使用 XML 数据格式,就可以将数据组合成下面的形式:

<request>
<firstName>Brett</firstName>
<lastName>McLaughlin</lastName>
<email>brett@newInstance.com</email>
< /request>

这里的数据与前面看到的相同,但是这一次采用 XML 格式。这没什么了不起的;这只是另一种数据格式,使我们能够使用 XML 而不是纯文本和名称/值对。
实际上,除非有某种限制迫使您转向 XML,否则用不着考虑使用别的数据格式。显然,如果要向需要 XML 格式的输入的服务器端程序发送数据,那么希望使用 XML 作为数据格式。但是,在大多数情况下,对于需要向应用程序发送多段信息的服务器,XML 是更好的选择;换句话说,XML 通常更适合用来向 Ajax 应用程序做出响应,而不是从 Ajax 应用程

序发出请求。
在使用名称/值对或 XML 时,实际上是使用 JavaScript 从应用程序中取得数据并将数据转换成另一种数据格式。在这些情况下,JavaScript 在很大程度上作为一种数据操纵语言,用来移动和操纵来自 Web 表单的数据,并将数据转换为一种适合发送给服务器端程序的格式。、
但是,有时候 JavaScript 不仅仅作为格式化语言使用。在这些情况下,实际上使用 JavaScript 语言中的对象来表示数据,而不仅是将来自 Web 表单的数据放进请求中。在这些情况下,从 JavaScript 对象中提取数据,然后再将数据放进名称/值对或 XML,就有点儿多此一举 了。这时就合适使用 JSON:JSON 允许轻松地将 JavaScript 对象转换成可以随请求发送的数据(同步或异步都可以)。

1.JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端

程序。这个字符串看起来有点儿古怪(稍后会看到几个示例),但是 JavaScript 很容易解释它,而且 JSON 可以表示比名称/值对更复杂的结构。例如,可以表示数组和复杂的对象,而不仅仅是键和值的简单列表。

(1)简单 JSON 示例:
按照最简单的形式,可以用下面这样的 JSON 表示名称/值对:
{ "firstName": "Brett" }
这个示例非常基本,而且实际上比等效的纯文本名称/值对占用更多的空间:
firstName=Brett
但是,当将多个名称/值对串在一起时,JSON 就会体现出它的价值了。首先,可以创建包含多个名称/值对的记录,比如:
{ "firstName": "Brett","lastName":"McLaughlin","email": "brett@newInstance.com" }

从语法方面来看,这与名称/值对相比并没有很大的优势,但是在这种情况下 JSON 更容易使用,而且可读性更好。例如,它明确地表示以上三个值都是同一记录的一部分;花括号

使这些值有了某种联系。

(2)值的数组:
当需要表示一组值时,JSON 不但能够提高可读性,而且可以减少复杂性。例如,假设您希望表示一个人名列表。在 XML 中,需要许多开始标记和结束标记;如果使用典型的名称/值对(就像在本系列前面文章中看到的那种名称/值对),那么必须建立一种专有的数据格式,或者将键名称修改为 person1-firstName 这样的形式。
如果使用 JSON,就只需将多个带花括号的记录分组在一起:

[html] view plain copy
  1. {"people":[
  2. {"firstName":"Brett","email":"brett@newInstance.com"},
  3. {"firstName":"Jason","lastName":"Hunter","email":"jason@servlets.com"},
  4. {"firstName":"Elliotte","lastName":"Harold","email":"elharo@macfaq.com"}
  5. ]}



2.在 JavaScript 中使用 JSON:
(1)将 JSON 数据赋值给变量
例如,可以创建一个新的 JavaScript 变量,然后将 JSON 格式的数据字符串直接赋值给它:

copy
    varpeople=
  1. {"programmers":[
  2. {"firstName":"Brett",248)"> {"firstName":"Jason",108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> {"firstName":"Elliotte","email":"elharo@macfaq.com"}
  3. ],108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> "authors":[
  4. {"firstName":"Isaac","lastName":"Asimov","genre":"sciencefiction"},108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> {"firstName":"Tad","lastName":"Williams","genre":"fantasy"},248)"> {"firstName":"Frank","lastName":"Peretti","genre":"christianfiction"}
  5. ],248)"> "musicians":[
  6. {"firstName":"Eric","lastName":"Clapton","instrument":"guitar"},248)"> {"firstName":"Sergei","lastName":"Rachmaninoff","instrument":"piano"}
  7. ]
  8. }

这非常简单;现在 people 包含前面看到的 JSON 格式的数据。但是,这还不够,因为访问数据的方式似乎还不明显。
(2)访问数据
要想访问 programmers 列表的第一个条目的姓氏,只需在 JavaScript 中使用下面这样的代码

people.programmers[0].lastName;

注意,数组索引是从零开始的。所以,这行代码首先访问 people 变量中的数据;然后移动到称为 programmers 的条目,再移动到第一个记录([0]);最后,访问 lastName 键的值。结果是字符串值 “McLaughlin”。
下面是使用同一变量的几个示例。

people.authors[1].genre// Value is "fantasy"
people.musicians[3].lastName// Undefined. This refers to the fourth entry,and there isn't one
people.programmers.[2].firstName// Value is "Elliotte"

利用这样的语法,可以处理任何 JSON 格式的数据,而不需要使用任何额外的 JavaScript 工具包或 API。

(3)修改 JSON 数据
正如可以用点号和括号访问数据,也可以按照同样的方式轻松地修改数据:

people.musicians[1].lastName = "Rachmaninov";

在将字符串转换为 JavaScript 对象之后,就可以像这样修改变量中的数据。
(4)转换回字符串
当然,如果不能轻松地将对象转换回本文提到的文本格式,那么所有数据修改都没有太大的价值。在 JavaScript 中这种转换也很简单:

String newJSONtext = people.toJSONString();

这样就行了!现在就获得了一个可以在任何地方使用的文本字符串,例如,可以将它用作 Ajax 应用程序中的请求字符串。 更重要的是,可以将任何 JavaScript 对象转换为 JSON 文本。并非只能处理原来用 JSON 字符串赋值的变量。为了对名为 myObject 的对象进行转换,只需执行相同形式的命令: String myObjectInJSON = myObject.toJSONString(); 这就是 JSON 与其他数据格式之间最大的差异。如果使用 JSON,只需调用一个简单的函数,就可以获得经过格式化的数据,可以直接使用了。对于其他数据格式,需要在原始数据和格式化数据之间进行转换。即使使用 Document Object Model 这样的 API(提供了将自己的数据结构转换为文本的函数),也需要学习这个 API 并使用 API 的对象,而不是使用原生的 JavaScript 对象和语法。

原文链接:https://www.f2er.com/ajax/162946.html

猜你在找的Ajax相关文章