我面临着一个非常奇怪的问题,我似乎无法从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()的成功事件
答案 0 :(得分:1)
当您记录该值时,$.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');
答案 1 :(得分: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() {
//
});
};