0

function  listmake(mi)
{
 var i,k;
 var urlstring=[];
 for(i=0;i<Object.keys(mi).length;i++)
 {
  k = Object.keys(mi);
  urlstring[i] = mi[k[i]];
 }
 
 
return  urlstring;   

}


function videomatter()
{




var xm = new XMLHttpRequest();
xm.onreadystatechange = function() {
     if (xm.readyState == 4 && xm.status == 200) {
     // document.writeln("hello1");
      var a = xm.responseText;
      // JSON.stringify(a);
       var myObj = JSON.parse(a);
       //document.writeln(myObj.co001);
 var c =  listmake(myObj);
 document.writeln(c); //getting correct output
 return c;
     }
}


xm.open("GET","GetVideoNameServlet?t=<%=sss%>",false);
xm.send();




}


function su()
{
  var b = videomatter(); 
   document.writeln(b);//undefined
   return b;
}

i want that the varible b in su will return desirable values but instead of that it is always returning undefined even if i turn async from true to false as mentioned in other answers i request you all to help me plz thanks in advance

1 Answers1

0

You need to use another function to call after AJAX done because of asynchronous

function runAfterAjaxDone(serverResponse) {
  console.log(serverResponse);
  // Do what you need with 
}
function videomatter()
{




var xm = new XMLHttpRequest();
xm.onreadystatechange = function() {
     if (xm.readyState == 4 && xm.status == 200) {
     // document.writeln("hello1");
      var a = xm.responseText;
      // JSON.stringify(a);
       var myObj = JSON.parse(a);
       //document.writeln(myObj.co001);
 var c =  listmake(myObj);
  runAfterAjaxDone(c); 
 document.writeln(c); //getting correct output
 return c;
     }
}


xm.open("GET","GetVideoNameServlet?t=<%=sss%>",false);
xm.send();




}
Mohamed Abbas
  • 2,228
  • 1
  • 11
  • 19