一直以来用ajax都是简单的传递字符串。目前项目中需要进行相对复杂的ajax传值,所以研究了一下json,居然以前没有接触过,囧啊。。。
JSON = Javascript Object Notation
它是javascript专有的一种数据格式,类似于xml,但是比xml还要简单易用。同时它也是轻量级的javascript库。
JSON 文件
- JSON 文件的文件类型是 ".json"
- JSON 文本的 MIME 类型是 "application/json"
定义它的基本格式是:
var people = {"programmers": [ {"firstName":"Brett","lastName":"McLaughlin","email":"brett@newInstance.com"},
{"firstName":"Jason","lastName":"Hunter","email":"jason@servlets.com"},
{"firstName":"Elliotte","lastName":"Harold","email":"elharo@macfaq.com"}
],
"authors": [ {"firstName":"Isaac","lastName":"Asimov","genre":"science fiction"},
{"firstName":"Tad","lastName":"Williams","genre":"fantasy"},
{"firstName":"Frank","lastName":"Peretti","genre":"christian fiction"}
],
"musicians": [ {"firstName":"Eric","lastName":"Clapton","instrument":"guitar"},
{"firstName":"Sergei","lastName":"Rachmaninoff","instrument":"piano"}
]
}
JSON 值可以是:
- 数字(整数或浮点数)
- 字符串(在双引号中)
- 逻辑值(true 或 false)
- 数组(在方括号中)
- 对象(在花括号中)
- null
调用方法:
name = people.programmers[0].firstName;
解析JSON文件:
obj = JSON.parse(txt);
name = obj.people.programmers[0].firstName;
AJAX中POST提交参数并获得JSON数据:
$.post("myajax.do",{
"name":$("#name").val()
},
function(text){
$("#name1").text(text.people[0].name);
$("#tel").text(text.people[0].tel);
},
"json");
ACTION里手动转换JSON数据:
//获得表单传入参数
String name = myajaxForm.getName();
String tel = myajaxForm.getTel();
//实例化输出
Writer out = response.getWriter();
//引号未转义
String json = "{"people":
[
{
"name":name,
"tel":tel
}
]
}";
//输出
out.write(json);
【记得按钮onclick事件后一定要return false】