Javascript 方法在ajax调用中返回null
我正在从数据库中检索数据,数据是使用ajax正确地从数据库中获取的,问题是我试图将检索到的数据存储在一个数组中,在下面的代码Javascript 方法在ajax调用中返回null,javascript,jquery,ajax,json,liferay,Javascript,Jquery,Ajax,Json,Liferay,我正在从数据库中检索数据,数据是使用ajax正确地从数据库中获取的,问题是我试图将检索到的数据存储在一个数组中,在下面的代码return jsonArray中,数据正在变为null。有人能帮我吗 function selectEntities(){ var jsonArray = []; try{ var url = '<%=resourceURL%>'; var A = AUI();
return jsonArray
中,数据正在变为null。有人能帮我吗
function selectEntities(){
var jsonArray = [];
try{
var url = '<%=resourceURL%>';
var A = AUI();
A.io.request(url,
{
data: {
cmd:'entities',
},
dataType:'json',
method:'post',
on: {
success: function(event, id, obj) {
try{
var instance = this ;
var jsonObject = instance.get('responseData');
var jsonArrayTemp = jsonObject.objJsonArray ;
//alert("From the entities: "+jsonArrayTemp);
for(var i=0;i < jsonArrayTemp.length ;i++ ){
jsonArray.push([jsonArrayTemp[i][0],jsonArrayTemp[i][1]]);
}
}catch(exception){
//alert(exception);
}
}
}
}
);
}catch(exception){
//alert(exception);
}
return jsonArray ;
}
函数selectEntities(){
var jsonArray=[];
试试{
var url='';
var A=AUI();
A.io.请求(url,
{
数据:{
cmd:“实体”,
},
数据类型:'json',
方法:'post',
关于:{
成功:功能(事件、id、obj){
试一试{
var实例=这个;
var jsonObject=instance.get('responseData');
var jsonArrayTemp=jsonObject.objJsonArray;
//警报(“来自实体:+jsonArrayTemp”);
对于(var i=0;i
A.io.request
是一个异步函数。由于函数需要一些时间来执行,单线程javascripts会继续执行下面的代码,直到响应到来为止。当响应到来并将结果推送到数组时,函数已经执行并返回
作为一种解决方案,您可以在success回调函数中添加处理返回数组的代码,而无需尝试返回
function selectEntities(callback){
..............
success: function(event, id, obj) {
try{
var instance = this ;
var jsonObject = instance.get('responseData');
var jsonArrayTemp = jsonObject.objJsonArray ;
//alert("From the entities: "+jsonArrayTemp);
for(var i=0;i < jsonArrayTemp.length ;i++ ){
jsonArray.push([jsonArrayTemp[i][0],jsonArrayTemp[i][1]]);
}
callback(jsonArray); // calling the callback function
}catch(exception){
//alert(exception);
}
}
...........
}
您检查过ajax调用的返回值吗?entitiesJsonObject:…{“objJsonArray”:[[1,“用户”],[2,“课程”],[3,“组织”]}这是实际从数据库获取的数据。当我打印jsonArrayTemp时,以下数据显示1、用户、2、课程、3、组织可能与我删除的returns语句重复,它显示的是undefinedWhat
selectRoles()
?它是否完全像selectEntities()
function?var entities=selectEntities();警报(角色);您不能在这里使用退货。您必须了解Java脚本的异步行为。。。您可以做的是将函数传递给selectEntities
以处理jsonArray,而不是返回。。我编辑了代码来解释更多我的意思..我做了你说过的:(但不起作用,请看我的JSP这里。。
var callback = function (jsonArray) {
alert(jsonArray); //code to handle jsonArray
}
selectEntities(callback);