Javascript 重写$.get()中的变量值

Javascript 重写$.get()中的变量值,javascript,jquery,Javascript,Jquery,我面临一个非常奇怪的问题,我似乎无法从$.get()的success函数中重写变量jSonData 注意:当您记录该值时,$.get()的成功事件被触发,由于AJAX请求当时尚未返回,$.get()尚未覆盖jSonData。改为在函数内部执行console.log $.get(data, function(d) { jSonData = d; //I attempt to override the value here - You just did! console.log(jSonDa

我面临一个非常奇怪的问题,我似乎无法从
$.get()的success函数中重写变量
jSonData


注意:当您记录该值时,$.get()的成功事件被触发,

由于AJAX请求当时尚未返回,
$.get()
尚未覆盖
jSonData
。改为在函数内部执行
console.log

$.get(data, function(d) {
  jSonData = d; //I attempt to override the value here - You just did!
  console.log(jSonData);
}, 'json');

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

$.get(data, function(d) {
  jSonData = d; //I attempt to override the value here - You just did!
  console.log(jSonData);
}, 'json');

我遇到了这个问题,因为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() {
        //
    });

};

我遇到了这个问题,因为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() {
        //
    });

};

Ajax不是异步的吗?@未定义的它刚刚从我的脑海中消失了。有没有一种方法可以以正确的方式解决这个问题,而无需
setTimeOut()
setInterval()
?@Starx:检查这个问题@Starx:您还没有解释您遇到的原始问题solving@zerkms,我试图从$.get()内部重写变量值。埃尔克兰斯张贴的问题回答了我的问题。我已经投票决定关闭它。Ajax不是异步的吗?@未定义的它刚刚从我的脑海中消失了。有没有一种方法可以以正确的方式解决这个问题,而无需
setTimeOut()
setInterval()
?@Starx:检查这个问题@Starx:您还没有解释您遇到的原始问题solving@zerkms,我试图从$.get()内部重写变量值。埃尔克兰斯张贴的问题回答了我的问题。我已经投票决定关闭。有没有一种方法可以正确地解决这个问题,而不需要
setTimeOut()
setInterval()
?@Starx:你在这个答案中看到
setTimeOut
setInterval
的地方?@Starx:那你当时为什么提到它们呢?为什么你认为解决方案不正确?@zerkms,我以前读过类似的问题,解决方案是使用这些函数检查并等待数据返回。@Starx:但这个答案没有使用它。它没有使用javascript中提供的数百个其他函数,也不是提及所有函数的原因:-)有没有一种方法可以以正确的方式解决这个问题,而无需
setTimeOut()
setInterval()
?@Starx:在这个答案中,你在哪里看到
setTimeout
setInterval
?@Starx:那你为什么提到它们呢?为什么你认为解决方案不正确?@zerkms,我以前读过类似的问题,解决方案是使用这些函数检查并等待数据返回。@Starx:但这个答案没有使用它。它没有使用javascript中提供的数百个其他函数,也不是提及所有函数的理由:-)