使用 $.ajax 请求本地静态文件数据,数据明明是JSON格式,但返回值的数据类型却是字符串,这是因为在数据传输过程中,JSON是以文本(即字符串)的形式传递的,所以返回的值也就是字符串类型,因此在操作返回的JSON数据时,需要先把JSON字符串转换为JSON对象,也就是解析,即反序列化(简单地理解)。
涉及基础
简单地理解,序列化就是把JSON对象转化成JSON字符串类型的过程;反序列化则是把JSON格式的字符串转化为JSON对象的过程。
在jQuery中可以使用 $.parseJSON(data) 实现标准格式的JSON字符串反序列化为JSON对象。
代码示例
json.txt文件数据如下
[
{
"title": "带完整省市json数据的jquery省市二级联动代码",
"datetime": "2022-7-21",
"url":"https://www.tddx.net/post-641.html"
},
{
"title": "原生javascript获取指定对象所有子孙元素集合的代码",
"datetime": "2022-4-25",
"url":"https://www.tddx.net/post-636.html"
}
]
使用$.ajax请求该文件的数据
$.ajax({
url: 'json.txt',
async: false,
type:'get',
error : function(result, status, xhr) {
alert('数据请求失败');
},
success: function (result, status, xhr) {
var events = $.parseJSON(result);
var events = JSON.parse(result);//ECMAScript 5中的方法,推荐
console.log(events);
}
});
附:
推荐使用javascript的反序列方法 JSON.parse()(ECMAScript 5),序列化方法 JSON.stringify()。
注意:json数据的属性名、字符串属性值要用双引号,不能用单引号;属性值不能有空格;最后一个属性结尾不能有符号;最后一个对象结尾不能有符号。否则JSON.parse()无效。