龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > Javascript编程 >

Ajax 的 Java 对象序列化(1)(5)

时间:2013-03-06 14:58来源:未知 作者:admin 点击:
分享到:
responseText 属性 当服务器需要向客户机发送非常简单的值时,responseText 特别方便,它可以避免 XML 导致的带宽支出和处理支出。例如,简单的 true/false 响应
responseText 属性

当服务器需要向客户机发送非常简单的值时,responseText 特别方便,它可以避免 XML 导致的带宽支出和处理支出。例如,简单的 true/false 响应可以由服务器以纯文本方式返回,可以是逗号分隔的简单的名称或数字列表。但是,一般来说,最好不要在同一个应用程序中把 XML 响应和纯文本响应混合使用;保持单一数据格式可以让代码抽象和重用更加简单。

responseText 与 XML 响应数据结合时也会有用。在只需要从响应文档中提取单一值的场景中,“欺骗性”地把 XML 当作文本字符串,而不把它当作结构化的文档对待,会更方便。例如,清单 6 显示了如何用正则表达式从顾客的订单历史中提取第一笔订单的日期。不过,这实际是种花招,一般不应当依赖 XML 文档的词汇表达。

清单 6. 用正则表达式处理 XMLHttpRequest 的 responseText 对象

var orderHistoryText = req.responseText;
var matches = orderHistoryText.match(/(.*?)/);

var date = matches[1];

在某些情况下,采用即时方式使用 responseText 会比较方便。但是,理想情况下,应当有种途径,可以用一种能够让 JavaScript 轻松导航、却没有 XML 处理支出的格式表示复杂的结构化数据。幸运的是,确实存在这样一种格式。

JavaScript 对象标注

实际上,JavaScript 对象的大部分都由联合数组、数字索引数组、字符串、数字或者这些类型的嵌套组合而成。因为所有类型都可以用 JavaScript 直接声明,所以可以在一条语句中静态地定义对象图。清单 7 使用 JSON 语法声明了一个对象,并演示了如何访问这个对象。大括号表示联合数组(即对象),它的键 -值组合由逗号分隔。方括号表示数字索引数组。

清单 7. 用 JSON 在 JavaScript 中直接声明一个简单对象

var band = {
  name: "The Beatles",
  members: [
    {
      name: "John",
      instruments: ["Vocals","Guitar","Piano"]
    },
    {
      name: "Paul",
      instruments: ["Vocals","Bass","Piano","Guitar"]
    },
    {
      name: "George",
      instruments: ["Guitar","Vocals"]
    },
    {
      name: "Ringo",
      instruments: ["Drums","Vocals"]
    }
  ]
};

// Interrogate the band object
var musician = band.members[3];
alert( musician.name
        + " played " + musician.instruments[0]
        + " with " + band.name );

既然 JSON 是一个有趣的语言特性,那么它对 Ajax 有什么意义呢?妙处在于可以用 JSON 在 Ajax 服务器响应中通过网络发送 JavaScript 对象图。这意味着在客户端可以避免使用笨拙的 DOM API 对 XML 进行导航 ―― 只需要分析 JSON 响应,就会立即得到可以访问的 JavaScript 对象图。但是,首先需要把 JavaBean 变成 JSON。

精彩图集

赞助商链接