jquery ajax调用中的回调函数和全局变量

时间:2013-07-18 11:52:55

标签: jquery callback

我使用回调选项来获取成功块之外的值(跨域调用)。我在回调函数中获取值,但不在外部。请参阅以下代码。此外,如果该值仅在回调函数内可用,那么在成功块之外编写代码的区别是什么。

var globalVar ;
        function callbackClick() {
            var jsonData = { "name": "Alex" };
            test("http://mydomain:84/AuthService.svc/TestAsyncGet", jsonData, callback);  
        }

        var callback = function (data, textStatus, xhr) {
            globalVar = data;
            alert(data + "\t" + textStatus); //here I am getting data
        }

        var test = function (url, jsonData, cb) {
            $.support.cors = true;
            $.ajax({
                url: url,
                type: "GET",
                data: jsonData,
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                processdata: true,
                success: cb,
                error: function error(response) {
                    alert("Network error");
                },
                complete: function (msg) {
                }
            });
            alert("GLOBAL  " + globalVar); //here i am not getting the value
        }

还有一个: - 即使我没有使用回调函数,成功块内的代码也会在$ .ajax之外的alert语句之前执行,那么为什么我没有获得该值?

感谢

1 个答案:

答案 0 :(得分:0)

在xmlhttprequest开始之后执行$ .ajax()指令之后的警报但是在它结束之前,即在调用成功函数之前执行。因此,当时,globalVar仍未定义。