Javascript 如何从$.getjson获取数据

Javascript 如何从$.getjson获取数据,javascript,jquery,getjson,Javascript,Jquery,Getjson,我这样编写jquery var machineId = []; $.getJSON('ajax/getmachines.php', { plant: vPlant, floor: vBuilding + vFloor }, function(dataList) { $.each(dataList, function(recordno, machine) { machineId.push(machine['id']); alert(machine['id']

我这样编写jquery

var machineId = [];
$.getJSON('ajax/getmachines.php', { plant: vPlant, floor: vBuilding + vFloor }, function(dataList) {
    $.each(dataList, function(recordno, machine) {
        machineId.push(machine['id']);
        alert(machine['id']);
    });
}); 

alert(machineId[0]);

$中的第一个警报。每个
显示每个记录的正确数据,但为什么最后一个警报显示我未定义?如何使用数组
machineId
?谢谢。

请求是异步的,因此在填充阵列之前执行最后一个警报。尝试将“警报(machineId[0])放在$。每个操作之后。

getJSON方法是异步的-当运行时引擎到达最后一个警报时,它还没有完成执行

在回调完成之前,不能使用数组

只需在回调中执行任何需要执行的操作,例如:

$.each(dataList, function(recordno, machine) {
    machineId.push(machine['id']);
    alert(machine['id']);
});
alert(machineId.join(", "));

这将显示所有以逗号分隔的ID。

您可以从服务器发布纯文本响应吗?我建议您使用适当的调试工具,如Firebug。普通的
alert()
非常不适合显示复杂的数据。谢谢您,亲爱的阴影向导。但问题是,我想获得在另一个函数中使用的值,比如这个函数getmachineId(machineId){var machineId=[];$.getJSON('ajax/getmachines.php',{plant:vPlant,floor:vBuilding+vFloor},函数(dataList){$.each(dataList,函数(recordno,machine){machineId.push(machine['id'];});}var machineId=[];对于(i=0,iYou不能),您必须重新考虑所涉及的逻辑。