Arrays MooTools JSONP请求完成后,存储阵列为空 path=devicePath+'offset='+offset+'&limit=20&'; var deviceRequest=new Request.JSONP({ url:path, callbackKey:'jsonp', 日志:是的, onComplete:函数(数据){ console.log('Done'); Gallery.innerHTML=''; 对于(i=0;i

Arrays MooTools JSONP请求完成后,存储阵列为空 path=devicePath+'offset='+offset+'&limit=20&'; var deviceRequest=new Request.JSONP({ url:path, callbackKey:'jsonp', 日志:是的, onComplete:函数(数据){ console.log('Done'); Gallery.innerHTML=''; 对于(i=0;i,arrays,mootools,jsonp,Arrays,Mootools,Jsonp,您犯了一个常见错误:使用onComplete而不是onSuccess onComplete在请求完成时激发(即使有错误),并且不处理JSON onSuccess在请求成功时激发,并解析JSON。最后,onFailure在出现服务器错误(400、500等)时激发.仔细检查控制台输出,我还认为下面的代码试图在请求完成之前访问设备。这可能吗?我如何阻止它?您使用事件。onComplete是确保数据存在的唯一方法。您需要等待数据在e您运行代码的其余部分,或者您需要在代码最终到达时对其进行存根和处理。 p

您犯了一个常见错误:使用
onComplete
而不是
onSuccess

onComplete
在请求完成时激发(即使有错误),并且不处理JSON


onSuccess
在请求成功时激发,并解析JSON。最后,
onFailure
在出现服务器错误(400、500等)时激发.

仔细检查控制台输出,我还认为下面的代码试图在请求完成之前访问
设备。
这可能吗?我如何阻止它?您使用事件。onComplete是确保数据存在的唯一方法。您需要等待数据在e您运行代码的其余部分,或者您需要在代码最终到达时对其进行存根和处理。
path= devicePath + 'offset=' + offset + '&limit=20&';
var deviceRequest = new Request.JSONP({
    url: path,
    callbackKey: 'jsonp',
    log: true,

    onComplete: function(data){
       console.log('Done');
       Gallery.innerHTML = '';
       for (i=0; i<20; i++){
            devices[i]=data[i].device;
       }
       console.log(devices);
    }
}).send();