【发布时间】:2015-07-23 15:13:00
【问题描述】:
我正在使用其可用的 REST API 服务访问我的网站,该服务允许我首先进行身份验证,然后使用该身份验证的会话返回值来执行进一步的 API 调用。我可以正常访问它,没有任何问题。会话在一小时后超时。假设我想在一小时后进行 API 调用,我想重新验证并继续进行最初发生的 AJAX 调用。您能否建议我如何重做一个 AJAX 调用,如果会话超时,该调用将首先进行身份验证,然后继续最初存在的原始 AJAX 调用?
$.ajax({
type: "GET",
dataType: "json",
url: "url",
cache: false,
async: false,
success: function (data) {
alert(data);
},
error: function(xhr, textStatus, errorThrown) {
//$.ajax(this);
//return;
},
statusCode: {
403: function() {
var session = retryLogin();
if(session !== "")
{
// call this function again? How can we achieve this?????
}
}
}
});
请告诉我如何再次调用本来应该运行的 ajax 调用?
编辑: 基本上我有两个 AJAX 调用,即一个用于获取会话 ID 的身份验证,另一个是根据该会话 ID 获取一些数据。如果会话 ID 在中途过期,我想重做身份验证调用,然后继续进行最初会发生的 AJAX 调用。关于如何实现这一目标的任何建议?
我还添加了一个图表,只是为了显示我想要实现的目标。
干杯。
【问题讨论】:
-
由于
retryLogin必须执行 AJAX 调用,因此它将是异步的。你需要给它传递一个回调,回调会再次调用这个函数。 -
如果错误代码是无效会话之一(基本上是递归),也许您可以将主 ajax 调用包装在一个函数中并在错误句柄中调用它
-
您能否将其作为答案发布,请提供更多详细信息,以便我尝试一下?
标签: jquery ajax authentication call redo