在我正在创建的应用程序中,我有以下
XMLHttpRequest,并且我试图将xhr.onload()内的数据结果传递到在同一父函数中创建的数组中.
var url = 'http://api.soundcloud.com/resolve.json?'+resource+'&'+CLIENT_ID; var xhr = new XMLHttpRequest(); xhr.open('GET',url,true); xhr.onload = function(){ var data = JSON.parse(xhr.responseText); console.log(data.permalink_url); }; xhr.send();
在这下面我有一个数组的构建块,我试图将数据的结果传递给轨道字符串.
var Metadata = { id: val,title: title,url: posturl,track: data.permalink_url };
到目前为止我尝试的所有东西要么返回undefined或函数,现在我完全没有想法……
解决方法
@H_403_13@ Ajax异步执行(通常).这对Ajax的工作方式至关重要.这意味着你不能指望onload方法何时触发,或者即使它会触发.这意味着依赖于xhr.responseText(HTTP请求的结果)的所有代码都必须在回调本身内完成.例如:xhr.onload = function () { // This will execute second doStuffWithData(JSON.parse(xhr.responseText)); } // This will execute first xhr.send(); var anything = anythingElse;