方法在 AJAX 调用中返回 null
method returns null in ajax call
我正在从数据库中检索数据,数据使用 ajax 正确来自数据库,问题是我试图将检索到的数据存储在数组中,在下面的代码中return jsonArray
变得空。 有人可以帮助我吗?
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 ;
}
A.io.request
是一个异步函数。由于该函数需要一些时间来执行,单线程 javascripts 会继续执行该函数的以下代码,并继续执行其他工作,直到响应到来。当响应到来并将结果推送到数组时,该函数已经执行并返回。
作为解决方案,您可以在成功回调函数中添加处理返回数组的代码,而无需尝试返回。
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);
}
}
...........
}
然后定义回调函数并调用。
var callback = function (jsonArray) {
alert(jsonArray); //code to handle jsonArray
}
selectEntities(callback);
相关文章:
- Meteor方法在客户端返回null,在客户端运行的相同方法返回正确的值
- php函数的ajax html$_POST值返回null
- 是否可以 document.getElementsByTagName('head')[0] ever 返回 null
- Firebase:查询返回null
- 在浅层渲染的反应组件上,Enzyme为道具返回null
- jQuery Multiselect插件返回null长度(应为0?)
- 如何处理getElementById返回Null
- JavaScript中的RegExp返回null
- Javascript 中的 RegEx 返回 Null
- 加载时的getelementbyID返回null
- 谷歌脚本在第二次调用Gmail后返回null
- Indexeddb OpenCursor在特定键值上返回null
- Ajax响应返回null
- 有没有一种方法可以判断图像src是否在javascript内部返回null
- 当JS在Chrome控制台上正常工作时,Selenium JavaScript执行器返回null
- Auth$getUser返回null,即使用户已登录(AngularFire,Firebase)
- Mongoose JS findOne总是返回null
- 为什么我的ajax调用返回null
- 当与全局标志一起使用时,Javascript Regex在后续调用中返回null
- Regex以确定该值在JS中是否有效,返回null