前段时间研究一个仿win7的web前端桌面,其他的问题大致都看明白了,就是getJSON这个函数始终获取不到相应的数据。困扰了好长时间才解决,纪录下经验
getJSON语法如下
jQuery.getJSON(url,data,success(data,status,xhr))
参数 | 描述 |
---|---|
url | 必需。规定将请求发送的哪个 URL。 |
data | 可选。规定连同请求发送到服务器的数据。 |
success(data,status,xhr) | 可选。规定当请求成功时运行的函数。 额外的参数:
|
实际上是简写的ajax函数
$.ajax({
url: url,
data: data,
success: callback,
dataType: json
});
发送到服务器的数据可作为查询字符串附加到 URL 之后。如果 data 参数的值是对象(映射),那么在附加到 URL 之前将转换为字符串,并进行 URL 编码。
传递给 callback 的返回数据,可以是 JavaScript 对象,或以 JSON 结构定义的数组,并使用 $.parseJSON() 方法进行解析。
-------以上是基本描述,下面是自己的经验
getJSON没有返回值,也就是很难判断错误的类型,主要有如下:
1.json文件的格式。即所请求的url文件。JSON是严格定义好的数据格式,哪怕只是一个标点错误都会导致函数返回失败,所以自己写JSON文件一定要很小心。一般大型网站是用后台按规则生成静态文件或者获取php返回的对象。
2.要在服务器环境,浏览器直接打开本地文件可能有问题。经过试验,本地打开简单的获取字符串数据并添加到文本区是可以的,但是append.(html)插入网页元素则不行。具体原因可能是涉及到跨域访问。
这个问题困扰了好久,起初还以为是getJSON写错了,折腾换成ajax也是不行。放在apache服务器上才能正常执行,如下图对比。代码不变,数据是getJSON+append添加的
因为所用到JQuery的其他函数在本地打开都是完全正确的,即本地访问和服务器访问效果相同。唯有这个是例外,mark一下纪念折腾的日子