如何使用JSON格式 POST数据到服务器

如何使用JSON格式 POST数据到服务器,第1张

1. JSON的数据格式
a) 按照最简单的形式,可以用下面这样的 JSON 表示名称/值对:
{ "firstName": "Brett" }
b) 可以创建包含多个名称/值对的记录,比如:
{ "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstancecom" }
c) 可以创建值的数组
{ "people": [
{ "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstancecom" },
{ "firstName": "Jason", "lastName":"Hunter", "email": "jason@servletscom" }
]}
d) 当然,可以使用相同的语法表示多个值(每个值包含多个记录):
{ "programmers": [
{ "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstancecom" },
{ "firstName": "Jason", "lastName":"Hunter", "email": "jason@servletscom" }
],
"authors": [
{ "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" },
{ "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" }
],
"musicians": [
{ "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" }
]
}
注意,在不同的主条目(programmers、authors 和 musicians)之间,记录中实际的名称/值对可以不一样。JSON 是完全动态的,允许在 JSON 结构的中间改变表示数据的方式。

2. 在 JavaScript 中使用 JSON
JSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包。
21 将 JSON 数据赋值给变量
例如,可以创建一个新的 JavaScript 变量,然后将 JSON 格式的数据字符串直接赋值给它:
var people =
{ "programmers": [
{ "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstancecom" },
{ "firstName": "Jason", "lastName":"Hunter", "email": "jason@servletscom" }
],
"authors": [
{ "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" },
{ "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" }
],
"musicians": [
{ "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" }
]
}
22 访问数据
将这个数组放进 JavaScript 变量之后,就可以很轻松地访问它。实际上,只需用点号表示法来表示数组元素。所以,要想访问 programmers 列表的第一个条目的姓氏,只需在JavaScript 中使用下面这样的代码:
peopleprogrammers[0]lastName;
注意,数组索引是从零开始的。

23 修改 JSON 数据
正如访问数据,可以按照同样的方式修改数据:
peoplemusicians[1]lastName = "Rachmaninov";
24 转换回字符串
a) 在 JavaScript 中这种转换也很简单:
String newJSONtext = peopletoJSONString();
b) 可以将任何 JavaScript 对象转换为 JSON 文本。并非只能处理原来用 JSON 字符串赋值的变量。为了对名为 myObject 的对象进行转换,只需执行相同形式的命令:
String myObjectInJSON = myObjecttoJSONString();
说明:将转换回的字符串作为Ajax调用的字符串,完成异步传输。
小结:如果要处理大量 JavaScript 对象,那么 JSON 几乎肯定是一个好选择,这样就可以轻松地将数据转换为可以在请求中发送给服务器端程序的格式。

3. 服务器端的 JSON
31 将 JSON 发给服务器
a) 通过 GET 以名称/值对发送 JSON
在 JSON 数据中会有空格和各种字符,Web 浏览器往往要尝试对其继续编译。要确保这些字符不会在服务器上(或者在将数据发送给服务器的过程中)引起混乱,需要在JavaScript的escape()函数中做如下添加:
var url = "organizePeoplephppeople=" + escape(peopletoJSONString());
requestopen("GET", url, true);
requestonreadystatechange = updatePage;
requestsend(null);
b) 利用 POST 请求发送 JSON 数据
当决定使用 POST 请求将 JSON 数据发送给服务器时,并不需要对代码进行大量更改,如下所示:
var url = "organizePeoplephptimeStamp=" + new Date()getTime();
requestopen("POST", url, true);
requestonreadystatechange = updatePage;
requestsetRequestHeader("Content-Type", "application/x-(>火狐浏览器到插件中心搜poster,
然后安装插件填上链接,在parameters填参数,然后在content
to
send点
body
from
parameters
再点Post按钮就可以发了

这是可能的,但是不是每一个网页或网页游戏都可以,或者说几乎是都不可以这样修改,但是有个别的可以。你首先要明白什么情况下可以,什么情况下不可以。
如果处理数据的逻辑程序发生在浏览器端,并且数据是以网页元素的形式显示的,那么就是有可能实现,否则如果数据逻辑程序在服务器端或者数据在网页端是集成显示的,就不可能实现。举个例子吧,我曾经玩了个网页游戏,具体是哪个我就不说了,做的还比较漂亮,用的是纯HTML5和javascript技术,所有游戏逻辑代码都在客户端用js实现,服务器几乎只负责接收数据保存起来,以及和其他玩家的数据交互。这个理念是胖浏览器端与瘦服务器端机制,完全没有错,因为可以充分利用每一个浏览器的计算能力,降低服务器的负载,但是做的太极端了。游戏的时候在浏览器端用js和HTML调试工具(比如火狐的Firebug)暂时修改页面上的数据,然后程序就将修改后的数据读走发送给服务器。我当时都怀疑这游戏是不是没毕业的中专生做的。
一般的网页游戏都将数据以不可修改的形式呈现出来,例如Flash,不可能修改页面上的数据。或者将逻辑处理放在服务器端,假设你完成了一个任务,应该获得经验,浏览器只告诉服务器你完成了什么任务,由服务器判断这个任务应该获得多少经验,然后加到你的数据上,再发送给浏览器。服务器端还有完善的数据验证机制,防止浏览器端发送伪造的、重复的完成任务请求。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/12912337.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-28
下一篇 2023-05-28

发表评论

登录后才能评论

评论列表(0条)

保存