我有以下代码:
PHP代码:
$data = array();
$data[0]['name'] = "Kj";
$data[0]['age'] = 30;
$data[0]['country'] = "Italy";
$data[1]['name'] = "Dn";
$data[1]['age'] = 18;
$data[1]['country'] = "USA";
$data[2]['name'] = "Jo";
$data[2]['age'] = 22;
$data[2]['country'] = "Switzerland";
$data[3]['name'] = "Ro";
$data[3]['age'] = 34;
$data[3]['country'] = "UAE";
$data[4]['name'] = "Lc";
$data[4]['age'] = 13;
$data[4]['country'] = "UK";
echo json_encode($data);
Javascript代码:
var jsonData = {};
$(document).ready(function () {
$.get('page.php', function (data) {
jsonData = jQuery.parseJSON(data);
});
});
for (var i = 0; i < jsonData.length; i++) {
$('ul').append("<li>" + jsonData[i].name + "</li>");
}
问题是当把{for循环放在$.get callback
里面时,如下所示。
$.get('page.php', function (data) {
jsonData = jQuery.parseJSON(data);
for (var i = 0; i < jsonData.length; i++) {
$('ul').append("<li>" + jsonData[i].name + "</li>");
}
});
但是当把{for循环放在$.get callback
之外时没有打印出任何东西,但是数据已经成功收到,但没有打印出来。
现在,如何将已收到的数据存储在全局变量中以便在任何地方打印?
答案 0 :(得分:1)
当您使用异步操作(AJAX,超时)时,您应该更改方法。像这样:
function GetData(callback) {
$.get('page.php', function (data) {
callback(jQuery.parseJSON(data));
});
}
GetData(function (data) {
for (var i = 0; i < data.length; i++) {
$('ul').append("<li>" + data[i].name + "</li>");
}
});
答案 1 :(得分:0)
您的代码已经正确地将数据存储在全局变量中。
在F12-javascript控制台中输入jsonData
,您就会看到它。
问题在于控制流程,触发jsonData
使用的另一个事件是什么?