javascript - 似乎无法正确设置全局变量

标签 javascript jquery ajax

我正在尝试将 token 存储到全局变量中。当警报运行时,它显示为 null,但如果我一个接一个地放置 2 个警报,则第一个显示为 null,但第二个显示为 token 。

就像未设置 token 一样,因为第一个警报是在 ajax 请求完成之前运行的。

有人对我做错了什么有任何想法吗?

var csrf_token = null;

$(document).ready(function(){
    get_csrf_token();
    alert('token 1 '+csrf_token);
    alert('token 2 '+csrf_token);
});

function get_csrf_token()
{
    $.ajax({
        type: "GET",
        url: "http://buscore/index.php/includes/csrf_token/",
        dataType: "json",
        success: function(resp, status) {
            if (resp.status != 'success')
            {
                alert('Error - Update CSRF Token\n\n' + resp.status);
                return;
            }

            csrf_token = resp.csrf_token;
        }
    });
}

谢谢

已更新

好的,谢谢大家的帮助,但仍然不知道这是如何工作的。我使用像 jqgrid 这样的 get_csrf_token() 来发送带有如下请求的 token 。那么我如何传递 token 并让它工作呢?

beforeRequest: function (){
        get_csrf_token()
        //alert(csrf_token);
        $("#customer_grid").setPostDataItem('<?php echo $csrf_token_name; ?>', csrf_token);
    }

最佳答案

成功回调函数在 HTTP 响应到达时运行。

在您的测试中,响应是在显示第一个警报的时间和您单击按钮让脚本继续运行的时间之间到达的。

对回调中的数据执行任何您需要执行的操作,而不是像发起 Ajax 请求之后的语句那样。

评论请求的示例:

$(document).ready(function(){
    get_csrf_token();
});

function get_csrf_token()
{
    $.ajax({
        type: "GET",
        url: "http://buscore/index.php/includes/csrf_token/",
        dataType: "json",
        success: function(resp, status) {
            if (resp.status != 'success')
            {
                alert('Error - Update CSRF Token\n\n' + resp.status);
                return;
            }

            alert('token 1 '+csrf_token);
            alert('token 2 '+csrf_token);
        }
    });
}

关于javascript - 似乎无法正确设置全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5485952/

相关文章:

javascript - 如何在发布前减少数字[值]?

javascript - 动态设置嵌套对象的属性

javascript - 使用 Jquery if 和 else 函数禁用按钮

php - 链式选择框 - 基本

java - 非法状态异常 : getOutputStream() has already been called for this response

javascript - 使用 JQuery Mobile 通过 PHP、POST 和 JSON 将数据发送到服务器时出现问题

javascript - 对两个数组的值进行分组(平均)

javascript - .json 文件的 HTML5 应用程序缓存?

javascript - jQuery:搜索包含特定标记的 div

javascript - 未捕获的类型错误 : Cannot read property 'outerHTML' of null