0

我有一个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:我已经简化了功能,(功能正常,但问题在于执行顺序)

4

3 回答 3

1

因为 AJAX 是异步的(因此得名)。在 AJAX 请求完成之前,正在执行记录“第一个 ajaxRespose”的控制台日志,这就是您未定义的原因。然后 AJAX 请求完成并且您得到响应。

于 2013-04-02T09:21:54.007 回答
1

因为$.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]
于 2013-04-02T09:22:03.557 回答
1
于 2013-04-02T09:24:09.257 回答