Click here to Skip to main content
15,881,588 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
In the code below. When I run debugging, the sequence likes that below:
1) At var m = GetArray("VA");
2) At return s; // last line of the function
3) At debugger; // 1st debugger line
4) At debugger; // 2nd debugger line
5) Out of the function. Of course, no value is returned on var m.
How can this bug be fixed? Thanks for your advisory.

When the function GetArray() is called, it always goes to 'return s;' first in debugging
JavaScript
var m = GetArray("VA");
debugger;        // 1st debugger line

function GetArray(s0) {
  var s;
  $.support.cors = true;
  $.ajax({
 	async: true,
	type: 'Get',
	url: myURL,                  // myURL - a global variable 
	dataType: 'json',
	callbackParamName: 'callback',
	crossDomain: true,
	success: function (res) {
          debugger;         // 2nd debugger line
          s = res;                   // hundreds of records 
	},
	error: function (xhr, status, error) {
	  debugger;
	  console.log(error);
	}
   });
   return s;
}
Posted
Updated 19-Nov-14 4:02am
v2

1 solution

The GetArray function is returning the var s without a value as the ajax success call has not occurred yet.
When the Ajax call is successful then the 2nd debugger line is reached.

The success part of the $.ajax call can be modified like so:
JavaScript
...
	success: function (res) {
		AjaxSuccess(res);
	},
...
//comment out the return as the s is not being populated from the ajax call
//	return s;

function AjaxSuccess(result){
//populate the global m here, or do the processing of the result here
	m=result;
}

Hope that makes sense.
 
Share this answer
 
v2
Comments
jaket-cp 19-Nov-14 12:02pm    
When is the m being manipulated?
I assume it is being manipulated before the m is populated with the result from the ajax call.
Also forgot to mention to remove the return s; as it is not being used as you want it to be.
Use the function AjaxSuccess to manipulate the result.
s yu 19-Nov-14 12:03pm    
Re-coded and detected the returned value(s). Thanks a lot.
jaket-cp 19-Nov-14 12:04pm    
no problem :)

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900