我对JavaScript比较陌生,我想我知道回调函数的工作原理,但是在搜索Web几个小时后,我仍然不明白为什么我的代码不起作用。
我正在提出一个AJAX请求,该请求返回一个字符串数组。我正在尝试将此数组设置为局部变量,但是一旦执行回调函数,它似乎就失去了它的值。
var array; $.ajax({ type: 'GET', url: 'include/load_array.php', dataType: 'json', success: function(data){ array = data; }, error: function(jqXHR, textStatus, errorThrown){ alert("Error loading the data"); } }); console.debug(array);
在控制台中,array显示为未定义。谁能向我解释为什么未设置此参数,以及如何在回调函数中设置局部变量。
array
这里的问题是console.logajax调用异步执行时同步执行。因此它在回调完成之前运行,因此仍显示array为,undefined因为success尚未运行。为了使此工作有效,您需要将console.log通话延迟到success完成后。
console.log
undefined
success
$(document).ready(function() { var array; var runLog = function() { console.log(array); }; $.ajax({ type: 'GET', url: 'include/load_array.php', dataType: 'json', success: function(data){ array = data; runlog(); }}); });