首页 > $.getJSON为什么不执行其中的函数

$.getJSON为什么不执行其中的函数

$("#sign-in-btn").click(function () {
    $.getJSON("fakedata.js", function(json){
        alert("123");
    });
    return false; // 因为在form表单中,所以return false
});

这是js文件中的json数据

var data = {
  "user": [
    {
      "id": "1",
      "username": "Bill",
      "password": "password"
    },
    {
      "id": "2",
      "username": "George",
      "password": "password"
    },
    {
      "id": "3",
      "username": "Thomas",
      "password": "password"
    }
  ]
}

firebug中能看到可以读取到文件,但是就是不执行function(json){alert("123");}的内容。


这个问题似乎是JQuery的BUG,具体原因我也在研究中,希望题主能提供一些线索。
下面的代码来自JQuery v1.11.1
https://github.com/jquery/jquery/blob/1....

getJSON: function( url, data, callback ) {
    return jQuery.get( 'fakedata.js', function(json) {
        alert('123');
    }, undefined, 'json');
},
// 调用楼主的方法后执行jQuery.get( url, data, callback, "json" );
jQuery.each( [ "get", "post" ], function( i, method ) {
    jQuery[ method ] = function( url, data, callback, type ) {
        // shift arguments if data argument was omitted
        if ( jQuery.isFunction( data ) ) {
            type = type || callback;
            callback = data;
            data = undefined;
        }

        return jQuery.ajax({
            url: url,
            type: method,
            dataType: type,
            data: data,
            success: callback
        });
    };
});
// 最终执行
jQuery.ajax({
    url: 'fakedata.js',
    type: 'get',
    dataType: 'json',    //MIME: "application/json, text/javascript"
    data: undefined,
    success: function(json) {
        alert('123');
    }
});

事实上这个请求一切正常,你可以先尝试切换到原生的XMLHTTPRquest对象能否正常获取先。

补充:题主获取的js文件不是规范的json,建议修改一下数据原型。


"var data =" 删除再试


{
  "user": [
    {
      "id": "1",
      "username": "Bill",
      "password": "password"
    },
    {
      "id": "2",
      "username": "George",
      "password": "password"
    },
    {
      "id": "3",
      "username": "Thomas",
      "password": "password"
    }
  ]
}

js文件中只保留一个json字符串,不能是表达式,因为读取到的内容不是json, 所以回调函数不执行

【热门文章】
【热门文章】