JavaScript jQuery 的通过 ajax 读取静态 json 文件失效的问题 (已解决)

code_hou · 2014年03月12日 · 最后由 jsonline 回复于 2014年03月25日 · 12698 次阅读

已解决,json 格式有问题,jQuery 不能解析,也没有抛出错误。


HTTP SERVER 为 nginx,搭建了一个静态站点,用来写 Javascript。

今天遇到一个 ajax 加载静态 json 文件的问题,平时加载 json 都是用 PHP 动态输出,今天直接读取的站点根目录下的 data.json,我用浏览器的 DEBUG 工具查看网络请求,发现 ajax 请求已经发送并获取到了 data.json 的数据,但是声明的回调函数却没有执行,写了两种加载方式还是不行,在 Google 上搜索也没找到问题的解决办法。

第一种加载方式:

$.getJSON("/data.json", function (data){
    console.info(data);
});

第二种加载方式:

$.ajax({
    url : "/data.json",
    type : "GET",
    dataType : "json",
    async : true
}).done(function (res){
    console.info(res);
});

HTTP 请求截图:

加上失败时的回调看有什么信息。

检查下 data.json 是否是合法的 json, 不要有单引号之类的哦!

#1 楼 @Rei 回调函数没有执行,Javascript 没有报错。 我刚才用 Node 起了个 HTTP Server,然后用 Node 动态输出 JSON 格式数据然后用上面的两个方法的任意一种倒是可以顺利拿到数据并执行回调:

// node code
var login = function (req, res){
    var x = { 
        "ret_code" : 0,
        "data" : "qwlijbdsfhfhadbfaslbfsalfsafibsd",
        "error_mssage" : "success"
    };  
    res.json(x);
};
exports.login = login;

估计 json 格式有问题,把静态内容和 node 输出的内容格式化后 diff 一下。

这是在 Node HTTP Server 上动态请求的网络请求信息,这个请求回调函数可以被执行:

#4 楼 @Rei 谢谢,已解决,格式有问题,之前动态输出一个 JSON 格式有问题的话 Server Script 脚本会报错。但是郁闷的是静态 json 文件,如果格式不正确 jQuery 不能解析也不会抛出异常。

#2 楼 @yuanchuan 谢谢,格式错误,已解决。

jQuery 把错误信息放在回调里了

#8 楼 @jsonline 为什么我获取一个错误的 JSON 文件回调根本没有执行呢?也没有错误信息。

#9 楼 @code_hou jQuery 把错误信息放在回调里了,我不是说了么 $.ajax().done().fail(function(error){alert('出错了');alert(error)})

#10 楼 @jsonline bingo,忘了还有个 ERROR 的方法来着。THX

#11 楼 @code_hou error 已被抛弃,请统一用 fail 吧

需要 登录 后方可回复, 如果你还没有账号请 注册新账号