JQuery1.2后getJSON方法支持跨域读取json数据,原理是利用一个叫做jsonp的概念。当然,究其本质还是通过JSON.NET标签动态加载js,似乎这是实现真正跨域的***方法。下面进行分析研究。
1、getJSON的用法JQuery手册已经写得很详细,参考手册就可以了,很简单。需要指出的一点是getJSON利用的jsonp需要客户端与服务端作出配合。#t#
2、客户端传递的URL里要包含callback变量,以形如callback=?的形式结尾。(jquery会随机生成一个字符串替换?传递给服务端),服务端获取客户端传递的callback的值callbackValue,和需要传递的json字符串构成 JSON.NET’(’.json.’)'传回给客户端(示例为php字符串连接方式,其他语言类似)
一、可以通过Javascript中的eval函数把符合一定格式的字符串转化成JSON对象
<script language="javascript">
function ShowJsonString()
{
response = (
"[{ name: 'Joe', age: '30', gender: 'M'},{ name: 'Chandler', age: '32', gender: 'M'},{ name: 'Rose', age: '31', gender: 'M'}]" //字符串形式
);
var response1 = "({ name: 'Vicson', age: '30', gender: 'M'})"; //字符串形式,这里的小括号不能少
json = eval(response);
json1 = eval(response1);
alert(json[0].name + "," + json[1].age + "," +json[2].gender);
alert(json1.name);
}
ShowJsonString();
</script>
二、直接定义JSON对象
<script language="javascript">
function ShowJsonObject()
{
var user =
{
username:"andy",
"age":20,
"info": { "tel": "25003614", "cellphone": "882"},
"address":
[
{city:"shenzhen","postcode":"0755"},
{"city":"guangzhou","postcode":"020"}
] //address是一个数组
} //对象形式
alert(user.username);
alert(user.age);
alert(user.info.cellphone);
alert(user.address[0].city);
alert(user.address[0].postcode);
}
ShowJsonObject();
</script>
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
- 50.
- 51.
- 52.
- 53.
- 54.
- 55.
- 56.
- 57.
- 58.
- 59.
- 60.
- 61.
- 62.
- 63.
- 64.
- 65.
- 66.
- 67.
- 68.
- 69.
- 70.
- 71.
- 72.
- 73.
- 74.
- 75.
JSON.NET的规则很简单: 对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。