1

我面临一个非常奇怪的问题,我似乎无法jSonData从成功函数内部覆盖变量$.get()

$.fn.name = function(data, options) {
        var jSonData = data;
        var settings = $.extend({
                ....        
        }, options);

        if(typeof data !== 'object') {
            if(settings.debug) console.log('Getting configuration settings from: ', data);
            $.get(data, function(d) {
                jSonData = d; //I attempt to override the value here
            }, 'json');
        }
        console.log(jSonData); // Gives the same value as it was before
};

注意: $.get() 的成功事件被触发

4

2 回答 2

1

在您记录该值时,由于 AJAX 请求尚未返回,因此$.get()尚未覆盖。改为在函数内部执行jSonDataconsole.log

$.get(data, function(d) {
  jSonData = d; //I attempt to override the value here - You just did!
  console.log(jSonData);
}, 'json');
于 2013-05-22T00:27:19.313 回答
0

我遇到了这个问题,因为 AJAX 调用是异步的,因此在执行时调用不会完成console.log()

我用来解决问题的解决方案是使用延迟方法。

$.fn.name = function(data, options) {
    var jSonData = data;
    var settings = $.extend({
            ....        
    }, options);
    var getData = function() {
        if(typeof data !== 'object') {
            return $.get(data, 'json');
        }
        else { return jSonData; }
    };
    getData().done(function(result) {
        jSonData = result;
        console.log(jSonData); // Gives the same value as it was before
    }).fail(function() {
        //
    });

};
于 2013-05-22T03:26:56.893 回答