+ -
当前位置:首页 → 问答吧 → 一个传值问题,可能属于变量范围问题

一个传值问题,可能属于变量范围问题

时间:2010-05-19

来源:互联网

初学jQuery感觉真的很不错,但是遇到这个问题很头疼:以下是一个插件模型的code

(function($) {
$.fn.one_select = function(options) {
var opts = $.extend({}, $.fn.one_select.defaults, options);
//初始化
init(this, opts);
}
$.fn.one_select.defaults = {
url: 'data.json'
};

var content_array = [];

function init(container, opts) {
/****************************************************************************************
1. 加载数据 load_data
*****************************************************************************************/
load_data(opts);
alert(content_array[0] + "===================");
};

function load_data(opts) {
var url = opts.url + "?random=" + Math.random();
$.ajax({
type: "GET",
url: url,
dataType: "json",
global: false,
success: function(json) {
content_array = json;
alert("return success " + content_array[0].na);
},
error: function() {
alert("return error call");
}
});
};
})(jQuery);

当我load_data后,把加载的数据数组json赋值给content_array 时,好像赋值不了,在init()方法中alert(content_array[0] + "===================");会报错,而且值确实没有赋进去,不知道jQuery是怎么处理这个的,哪位能看看问题出在哪里,并详细的解释下jQuery怎么处理这个的

作者: bulktree   发布时间: 2010-05-19

不知道LZ用得是什么版本的jquery,最新版的话,$.ajax的回调函数貌似有2个参数:
function (data, type) {
    // 对Ajax返回的原始数据进行预处理
    return data  // 返回处理后的数据
}

作者: jokeykiss   发布时间: 2010-05-19

1.2的jQuery,回调后return data的值怎么传到load_data 之外的content_array变量中,藐视做了好几个测试都不行

作者: bulktree   发布时间: 2010-05-19

有点明白$.ajax的机理了,看来跟这个无关,我试了以下代码:
var arr = [];

arr = {name: "John", time: "2pm"};
alert(arr[0].name);    --undefined
alert(arr.name);    --John

arr = [{name: "John", time: "2pm"}, {name: "Mike", time: "1pm"}];
alert(arr[1].name);    --Mike

希望对LZ有帮助

PS:不知道这句代码能否正常执行?
alert("return success " + content_array[0].na);

作者: jokeykiss   发布时间: 2010-05-19

可以正常执行,我想问的是为什么content_array 这个数组我想在load_data方法之外使用就是不行?

作者: bulktree   发布时间: 2010-05-19

就这几段代码,目前看不出明显的问题所在~

作者: jokeykiss   发布时间: 2010-05-19

真的很郁闷 我换了jQuery的高版本也是同样的问题,难道我非要像闭包一样写在里面去吗?

作者: bulktree   发布时间: 2010-05-19

或者LZ用jquery提供的GET、POST函数试一下呢?

作者: jokeykiss   发布时间: 2010-05-20