我有一个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]

07-26 08:12