0

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

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 之外的警报语句之前执行,那为什么我没有得到值?

谢谢

4

1 回答 1

0

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

于 2013-07-18T12:00:56.833 回答