I recommend this way.
- use the ajax call by the async:false.
- move the return statement after the ajax call.
Example :
function makeJQGridDataFromList(url)
{
var rowData;
var viewPage = 0;
var viewTotal = 0;
var viewRecords = 0;
var resultObject;
$.ajax({
type:"GET",
url:url,
async: false,
success:function(args){
if(args.result==true)
{
try
{
viewPage = args.cond.pageIndex;
viewTotal = args.cond.recordCountPerPage;
viewRecords = args.cond.totalCnt;
rowData = jsonMakeRowsForGrid(args.data);
}
catch (e)
{
console.debug("Error!");
alert("Invalid data");
return;
}
} else
{
alert("API return ERROR!");
return;
}
},
error:function(e){
alert("Fail AJAX communication");
return;
}
});
resultObject = {
page : viewPage,
total : viewTotal,
records : viewRecords,
rows : rowData
};
return(resultObject);
}
You can test the following method.
(In the other file (html or js))
var gridData = makeJQGridDataFromList(openAPIUrl);
console.debug(">> " + JSON.stringify(gridData));
You can see the gridData.
I faced same problems. :)