从ajax响应中返回数据

时间:2011-07-06 19:28:03

标签: javascript jquery ajax jquery-plugins

我有这个功能

function get_last(){
                $.ajax({
                        url:'fronta.php?get_last&last=1',
                        success:function(data) {
                                var last = parseInt(data);

                        }

                });
                return last;

}

但当我称之为

var last = get_last();
alert(last);
萤火虫给我“最后没有定义”

如何将最后一个变量传递到全局范围?

2 个答案:

答案 0 :(得分:3)

首先,你是异步调用AJAX所以不要指望你可以从ajax响应中获取值并返回它。

第二件事是var last在成功处理程序的范围中定义,所以为了访问任何变量,应该在适当的范围内定义它。

如果您愿意,可以同步调用ajax以获取响应并将其返回。

    function get_last(){
var last = null;
                    $.ajax({
                            url:'fronta.php?get_last&last=1',.
                            success:function(data) {
                                    last = parseInt(data);

                            },
                            async: false

                    });
                    return last;

}

答案 1 :(得分:2)

function get_last(){
    var last;
    $.ajax({
        url:'fronta.php?get_last&last=1',
        async: false,
        success:function(data) {
            last = parseInt(data);
        }
    });
    return last;
}

last变量的声明移动到父函数,而不是将其放在回调中。在JavaScript中,内部函数可以访问在其父级中声明的变量,因此last = parseInt(data);将更新父函数中声明的变量。

另请注意,您必须同步运行此函数,否则函数将在处理响应之前返回。

此外,在您撰写问题时可能是一个拼写错误,但在.行的末尾有一个随机的url:'fronta...字符。你需要摆脱它。