$.getJSON:javascript 不从上到下运行 [重复]
Posted
技术标签:
【中文标题】$.getJSON:javascript 不从上到下运行 [重复]【英文标题】:$.getJSON : javascript not run from top to bottom [duplicate] 【发布时间】:2013-12-07 17:47:40 【问题描述】:我想解析一个 JSON 文件以填充数据表组件(由名为“datatables”的 jquery 扩展提供),但我调用的 $.getJSON 方法有一个奇怪的行为:javascript 代码似乎没有从上往下跑!
这是我的代码: 文件的标题
<style type="text/css" title="currentStyle">
@import "js/media/css/demo_table.css";
#autour
width: 400px;
height: 200px;
#table_id
width: 100%;
height: 100%;
</style>
<script src="js/media/js/jquery.js"></script>
<script src="js/media/js/jquery.dataTables.js"></script>
<script type="text/javascript">
function init()
var tab1;
$.getJSON('test2.json', function(json)
alert("json:"+json.personnes.personne[0].name);
tab1 = json;
);
alert("tab1:"+tab1);
var tab2 = [];
$.each(tab1.personnes.personne, function(index, val)
tab2.push([val.name, val.age]);
);
$(document).ready(function()
$('#table_id').dataTable(
"aaData" : tab2,
"bFilter" : false
);
);
</script>
</head>
<body onload="init();">
<!-- Une ou plusieurs balises html pour définir le contenu du document -->
<div id="autour">
<table id="table_id">
<!--<thead>
<tr>
<th>Column 1</th>
<th>Column 2</th>
</tr>
</thead>
<tbody>
<tr>
<td>Row 1 Data 1</td>
<td>Row 1 Data 2</td>
</tr>
<tr>
<td>Row 2 Data 1</td>
<td>Row 2 Data 2</td>
</tr>
</tbody>-->
</table>
</div>
</body>
事实上,警报“tab2:undefined”出现在“tab1:olivier”之前(“olivier”来自 JSON 文件)。
你能帮帮我吗?
问候,
奥利弗
【问题讨论】:
它正在从上到下执行。 【参考方案1】:@adeneo 是正确的,这是异步行为。如果您希望 getJSON 在其余代码之前运行,请将您的代码移动到成功回调中
$(document).ready(function()
$.getJSON('test2.json', function(json)
alert("json:"+json.personnes.personne[0].name);
tab1 = json;
alert("tab1:"+tab1);
var tab2 = [];
$.each(tab1.personnes.personne, function(index, val)
tab2.push([val.name, val.age]);
);
$('#table_id').dataTable(
"aaData" : tab2,
"bFilter" : false
);
);
);
还有其他方法可以做到这一点,即不使用 getJSON 快捷方式,并在 async
设置为 false 的情况下调用 AJAX:
$.ajax(
url: 'test2.json',
type: 'json',
async: false,
success: function(data)
// assign data here
)
【讨论】:
谢谢大家,回答很快,把剩下的代码移到回调函数中解决了我的问题!以上是关于$.getJSON:javascript 不从上到下运行 [重复]的主要内容,如果未能解决你的问题,请参考以下文章