我有一个Java脚本功能
function myfunction() {
var url = location.href;
var ajaxRespose;
$.ajax({
type:"GET",
url: url,
cache:false,
dataType: "text",
success: function(response) {
var data = $.parseJSON(response);
ajaxRespose = data;
console.debug("ajaxRespose ==>:"+ajaxRespose);
}
});
console.debug("first ajaxRespose: " +ajaxRespose);
}
return false;
}
在我的控制台(firbug)上,我得到:
first ajaxRespose: undefined
ajaxRespose ==>:[object Object]
我的问题是,为什么ajax调用在“第一个” console.debug之后执行。
PS:我简化了函数,(函数可以正常运行,但是问题在执行顺序上)
最佳答案
因为$.ajax()
是异步的,所以事件的序列是这样发生的:
$.ajax(...); // executes AJAX request
console.debug("first ajaxResponse:" + ajaxRespose); // undefined
/* some time later, we receive AJAX response */
// it executes the success function from the original AJAX request
console.debug("ajaxRespose ==>:"+ajaxRespose); // [object Object]