AJAX全局变量?(Javascript)
我认为这是一个全局变量问题。看这个:AJAX全局变量?(Javascript),javascript,ajax,Javascript,Ajax,我认为这是一个全局变量问题。看这个: function more_elems() { var ret = []; var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { var JSONObject = JSON.parse(xmlhttp.responseText);
function more_elems() {
var ret = [];
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
var JSONObject = JSON.parse(xmlhttp.responseText);
for (i=0;i<5;i++){
ret[i] =
{
id: JSONObject[i].id,
nombre: JSONObject[i].nombre,
mensaje: JSONObject[i].mensaje,
ult_m: JSONObject[i].ultima_modificacion
};
}
alert(ret);
}
}
xmlhttp.open("GET","somewesite.com",true);
xmlhttp.send();
return ret;
函数更多元素(){
var-ret=[];
var xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=函数()
{
if(xmlhttp.readyState==4&&xmlhttp.status==200)
{
var JSONObject=JSON.parse(xmlhttp.responseText);
for(i=0;iAjax是异步的。因此,当您在xmlhttp.send()之后立即调用时,将不会设置ret数组。
设置ret array
的值后,使用任何方法传递该值
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
var JSONObject = JSON.parse(xmlhttp.responseText);
for (i=0;i<5;i++){
ret[i] ={
id: JSONObject[i].id,
nombre: JSONObject[i].nombre,
mensaje: JSONObject[i].mensaje,
ult_m: JSONObject[i].ultima_modificacion
};
}
onAjaxSuccess(ret);
}
}
function onAjaxSuccess(arr){
alert(arr);
}
xmlhttp.onreadystatechange=function()
{
if(xmlhttp.readyState==4&&xmlhttp.status==200)
{
var JSONObject=JSON.parse(xmlhttp.responseText);
对于(i=0;i您需要了解回调是什么…即使您的变量范围是正确的,也要看一看。它可能会帮助您更好地理解变量范围和全局变量。;)是的,这很有效!谢谢。但是如果我尝试在主函数->函数more_elems()上返回ret怎么办.因为这就是我试图实现的。在该函数上返回ret数组。希望它有帮助。你不能这样做,因为我说过Ajax是异步的,当你在函数末尾返回时,ret数组将不会设置值。希望它有帮助。不要介意将它标记为正确答案;)好的……那我得想办法了。谢谢,我会的:)