我发现了很多与使用 JavaScript setInterval() 函数相关的问题,并找到了答案并实现了它们,但我的运气不好,没有一个可以成功。我可能会犯一些愚蠢的错误,但我现在无法找到它。以下是我的代码片段。
$.ajax({
url: "https://api.dropbox.com/1/oauth/request_token",
data:`{"oauth_version":"1.0","oauth_signature_method":"PLAINTEXT","oauth_consumer_key":"consumer_key","oauth_signature":"signature&"}`,
type: 'POST',
async: false,
cache: false,
dataType: 'text',
contentType: "application/x-www-form-urlencoded",
processData: true,
success: function(requestInfo)
{
console.log("requestInfo: "+requestInfo);
requestInfo = "http://localhost/?"+requestInfo;
var oauth_request_token = processQueryStringData(requestInfo, 'oauth_token'); //a regex function that parses oauth_token from requestInfo
var oauth_request_token_secret = processQueryStringData(requestInfo, 'oauth_token_secret');//a regex function that parses oauth_token_secret from requestInfo
console.log("oauth_token_secret: "+oauth_request_token_secret);
console.log("oauth_request_token: "+oauth_request_token);
var url = "<url-to-redirect to dropbox alongwith callback url>";
var win = window.open(url, 'DropBox Auth', 'width=800, height=600');
var pollTimer = window.setInterval(function() {
try {
console.log("URL ===== : " + win.document.URL);
if(**some condition is true**)
{
window.clearInterval(pollTimer);
// some code that i need to execute to get the authorize token and then the access tokens.
}
}
catch(e)
{
}
}, 1000);
});
ajax 返回成功,我得到了 oauth_request_token 和 oauth_request_token_secret。Dropbox 登录页面也会在子窗口中打开。但是 setInterval 没有执行,因为我没有看到console.log("URL ===== : " + win.document.URL); 在控制台上。
此外,在阅读了一些答案之后,我创建了一个名为event的函数,我将代码从 setInterval 回调函数中放置在其中并调用该函数,例如,
var pollTimer = window.setInterval(event,1000);
这时候pollTimer是全局的。另外,我只看到了一次log语句,然后刷新了html页面。我无法理解我哪里出错了。可能碰巧是一个愚蠢的错误,但无法弄清楚。请帮忙。
注意:此代码位于 .js 文件中的一个函数中,该文件包含在 html 文件中。