2013-07-10 30 views
-1

第一功能从URL获取JSON并将其推入阵列阵列JSON对象是未定义当传递到功能

var resultsArr = new Array(); 

// getResults() 
// JSON response function -> takes uuid returned from search query 
// and pings reponse url for any/all JSON objects of returned data 
function getResults(req_uuid) { 
    console.log("url fetched"); 
    $.getJSON($SCRIPT_ROOT + "/respond?id=" + req_uuid, function(data) { 
     console.log(data); 
     resultsArr.push(data); 
    }); 
} 

我有一个按钮的点击,将通过uuid成运行另一个功能getResults()在给定的时间间隔。这一切都工作。我甚至将整个数组转换为一个字符串,并在调用该函数之前将其附加到一个div中。 (这也是可行的)。我在调用之前记录数组中元素的数量;

console.log(resultsArr.length + " items in array")

此日志= 4 items in array

则函数被调用;

function showResults(array) { 
    var index = array.length; 
    console.log(index + " items in array"); 

} 

这会返回undefined items in array。我感到非常困惑。

+0

'resultsArr'的范围是什么?如果您要对其进行全局引用,请确保它在全局范围内,即未在函数内定义。 – Candide

+4

如何调用showResults? –

+0

看到这个:http://stackoverflow.com/questions/17460556/undefined-return-value-from-the-function-call-javascritpt/17460802#17460802 – slebetman

回答

1

在收到新数据并将其推送到ajax回调中的数组后,您想要调用showResults()

var resultsArr = new Array(); 

// getResults() 
// JSON response function -> takes uuid returned from search query 
// and pings reponse url for any/all JSON objects of returned data 
function getResults(req_uuid) { 
    console.log("url fetched"); 
    $.getJSON($SCRIPT_ROOT + "/respond?id=" + req_uuid, function(data) { 
     console.log(data); 
     resultsArr.push(data); 
     showResults(resultsArr);// <--- here 
    }); 
} 
+0

但是由于'showResults'正在通过for results循环遍历'resultsArr',所以会重新显示每个元素 – frankV

+1

请原谅我的无知,但我不知道'showResults()'函数内没有看到循环。我可能会错过一些东西。如果涉及到循环,你可以发布更多的代码吗? –

+0

你是对的我没有发布。为了简洁起见,我只是粘贴到相关部分。不过,感谢您的帮助。 – frankV