javascript - AJAX 请求无法读取更新的 session /全局变量

标签 javascript jquery python ajax flask

我正在使用 Flask 和 google-python-api-client 从 Youtube 获取数据。

我正在尝试在按下按钮时从播放列表异步加载下一个视频。为此,我需要在发出请求时设置 nextPageToken 参数

    $(document).ready(function() {
        $('#more_content').click(function() {
            $.ajax({
                type: "GET",
                url: "/test",
                data: {np_token: '{{ g.np_token }}'},
                success: function(result) {
                    $("#content").append(result);
                }
            });
        });
    });

我用来获取下一个视频的函数:

def get_another_video():
    res = YOUTUBE.playlistItems().list(
        part="snippet",
        playlistId=PLAYLIST_ID,
        maxResults="1",
        pageToken=request.args.get('np_token', None)
    ).execute()
    g.np_token = res.get('nextPageToken', None)
    return json.dumps(res)

这是行不通的,因为 AJAX 请求无法从全局变量 g.np_token 中读取更新后的值,如果我设置一个 session 变量,结果将是相同的。

我该如何解决这个问题?传递给 AJAX 的参数仅在 success 请求的情况下可用,但我需要它们在 data 部分可访问。

我读到过对于这种任务,redis 或 memcache 可能是合适的,但我不知道我是否能够访问模板中的那些变量。 谢谢!

最佳答案

似乎没有任何理由为您的 token 使用全局变量或任何单独的变量。它从 YouTube API 传回,然后您将整个响应传递给您的模板。您可以简单地在 JS 函数中从那里获取它,并在下次调用时使用该值。

var token;
$('#more_content').click(function() {
    $.ajax({
        type: "GET",
        url: "/test",
        data: {np_token: token},
        success: function(result) {
            token = result['nextPageToken'];
            $("#content").append(result);
        }
    });

关于javascript - AJAX 请求无法读取更新的 session /全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35524207/

相关文章:

python - 如何非对称地填充数组(例如,仅从一侧)?

javascript - 如何在单击链接时获取行值

javascript - 如何从 expressjs 的响应中捕获前端错误?

python - 使用python解析或读取cpp文件并通过忽略cpp文件注释添加数据

python - pandas DataFrame 中的假日日历

用于按下网页上特定按钮的 JavaScript 代码

javascript - 如何渲染 jquerymobile 页面?

javascript - 如何在不使用 {{#each}} 或 {{#if}} 的情况下从 Handlebars.js 中的 .json 文件获取数据?

javascript - 在 ruby​​ on Rails 中使用 ajax 调用 js.erb 文件

javascript - 如何每 5 秒更新一次传单标记