我有一个
jquery ajax代码如下:
$(document).ready(function() { var global_arr = new Array(); $.ajax({ url: 'result.PHP',type: 'post',dataType: 'json',success: function(data) { $.each(data,function(key,value) { global_arr.push(value.name); }); alert(global_arr); //get correct value,works fine } }); //end of ajax function alert(global_arr); //get null,it doesn't work properly });
解决方法
Ajax需要时间来完成.函数执行时间不会太长.因此,当您在ajax请求之外获得警报时,ajax请求仍然使用时间来完成(在传输或服务器端操作中).
您始终可以等待ajax方法完成.
$(document).ready(function() { var global_arr = new Array(); var complete = false;//flag to wait for ajax completion $.ajax({ url: 'result.PHP',success: function(data) { $.each(data,value) { global_arr.push(value.name); }); alert(global_arr); //get correct value,works fine complete = true;//mark ajax as complete } }); //end of ajax function (function runOnComplete(){ if( complete ){//run when ajax completes and flag is true alert(global_arr); }else{ setTimeout(runOnComplete,25);//when ajax is not complete then loop } })() });
但是,最常见的方法是使用回调.
$(document).ready(function() { function runOnComplete(){//code executes once ajax request is successful alert(global_arr); } var global_arr = new Array(); $.ajax({ url: 'result.PHP',value) { global_arr.push(value.name); }); alert(global_arr); //get correct value,works fine runOnComplete();//callback } }); //end of ajax function });
原文地址:https://www.jb51.cc/ajax/151009.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。