好吧,我是网络开发的新手,我花了好几个小时试图弄清楚如何将数据存入变量,以便在其他功能中使用它们。
以下是我要做的事情: -
(function($){
var Rows;
var Cols;
function initBoard(link) {
$.getJSON(link,function(data){
Rows=data.nRows;
});
$div = $('#container');
for(var i = 0; i < Rows; i++) {....}
......
这是一个从JSON文件中绘制网格的长函数。所以最后我调用
$(document).ready(function() {
initBoard("easy.json");
});
})(jQuery);
然后它绘制了这个东西。 问题是似乎没有东西存放到我的变量Rows ..
即使我尝试使用警报(行),也没有任何反应。
我尝试了另一个版本: -
(function($){
var dataR;
function test(link){
$.getJSON(link,function(data){
dataR=data.nCols;
dataC=data.nRows;
alert(dataR); // Gives me 13 as Well, DATA READED and stocked..
});
alert(dataR); // Gives me undefined..
};
function initBoard() { .... //
the function I call to draw the grid, but I want to use the global var
dataR inside..
.
.// functions I use
$(document).ready(function() {
initBoard("easy.json");
test("easy2.json");
});
})(jQuery);
感谢您原谅我的提示或帮助。
答案 0 :(得分:0)
好问题。这是因为,您正在通过异步ajax调用加载数据,并且在加载数据时,您正在执行下一行代码,其中您正在访问尚未初始化的变量,因为ajax调用仍在进行中。
如何解决:要么将代码块放入成功回调中,要么将代码块包装在函数中,并在ajax调用的成功回调中调用此函数。这将导致您,您将能够访问inautited变量。
快乐编码: - )
答案 1 :(得分:0)
在代码顶部的javascript中创建一个全局变量
var _dataToStock;
//your code here
_dataToStock=dataR;//Put this where you get desired value.
现在您可以使用_dataToStock变量来执行其他操作。 在使用之前,请务必检查_dataToStock的值是否为null和undefined。
答案 2 :(得分:0)
试试这个。
var globalVariable = [""];
$(function() {
initBoard(link);
printData();
});
function initBoard(link) {
$.getJSON(link,function(data){
var rlen = data.length;
for (var i = 0; i < rlen; i++)
{
globalVariable.push(data[i]);
}
}
});
function printData(){
try{
for(i = 0;;i++){
try{
if(String(globalVariable[i]) == 'undefined'){
break;
}
}catch(e){
}
alert(globalVariable[i]);
}
}catch(e){
}
}