下面介绍说明处理JSON只是常规的文本数据所以在将数据发送到服务器时无需太费心,当决定使用 POST 请求将 JSON 数据发送给服务器时,并不需要对代码进行大量更改,如下所示:
- var url = "organizePeople.php?timeStamp=" + new Date().getTime();
- request.open("POST", url, true);
- request.onreadystatechange = updatePage;
- request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
- request.send(people.toJSONString());
这些代码中的大部分,您都在 “ 掌握 Ajax,第 3 部分:Ajax 中的高级请求和响应” 中见过,应该比较熟悉,第 3 部分重点介绍了如何发送 POST 请求。请求使用处理JSON而非 GET 打开,而且 Content-Type 头被设置为让服务器预知它能得到何种数据。
在这种情况下,即为 application/x-www-form-urlencoded,它让服务器知道现在发送的是文本,正如它从常规的 HTML 表单中得到的一样。另一个简单提示是 URL 的末尾追加了时间。
这就确保了请求不会在它第一次被发送后即缓存,而是会在此方法每次被调用后重新创建和重发;此 URL 会由于时间戳的不同而稍微有些不同。这种技巧常被用于确保到脚本的 POST 每次都会实际生成新请求且 Web 服务器不会尝试缓存来自服务器的响应。
不管使用 GET 还是 POST,关键之处在于 JSON 就只是文本。由于不需要特殊编码而且每个服务器端脚本都能处理文本数据,所以可以轻松利用 JSON 并将其应用到服务器。假如 JSON 是二进制格式的或是一些怪异的文本编码,情况就不这么简单了;幸好处理JSON只是常规的文本数据(正如脚本能从表单提交中所接收到的数据,在 POST 段和 Content-Type 头中亦可以看出),所以在将数据发送到服务器时无需太费心。#t#
一旦您编写完客户端 JavaScript 代码、允许用户与 Web 表单和 Web 页的交互、收集发送给服务器端程序以做处理所需的信息,此时,服务器就成为了应用程序(如果调用了异步使用的服务器端程序,则可能是我们认为的所谓的 “Ajax 应用程序”)中的主角。
在此时,您在客户端所做的选择(比如使用 JavaScript 对象,然后将其转换成 JSON 字符串)必须要与服务器端的选择相匹配,比如使用哪个 API 解码 JSON 数据。。。。。
不管在服务器端使用何种语言,在服务器端处理JSON 基本上就需要两个步骤。
- 针对编写服务器端程序所用的语言,找到相应的 JSON 解析器/工具箱/帮助器 API。
- 使用 JSON 解析器/工具箱/帮助器 API 取得来自客户机的请求数据并将数据转变成脚本能理解的东西。
以上处理JSON差不多就是目前所应了解的大致内容了。接下来,我们对每个步骤进行较为详细的介绍。