我正在使用 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/