【问题标题】:jQuery post within post done functionpost done 函数中的 jQuery post
【发布时间】:2017-03-17 16:46:06
【问题描述】:

我正在尝试实施并找出我以前从未做过的事情。我知道该怎么做,但我不确定该怎么做......

所以我在我的网站上有一个按钮,用户可以在其中执行我的应用程序的授权。当用户访问 xx 网站并授权我的应用程序时,我想每 3 秒向该 xx 网站执行一次 jQuery 发布,检查用户是否已授权我的应用程序使用它。

如果来自网站的响应是成功的,我想让按钮启用并可点击以继续最后一步,将一些记录插入数据库。

所以现在的代码是这样的:

 $(document).on("click", "#btnClick", function (e) {
            $(this).prop('disabled', true);
            e.preventDefault();
            $.post("/GetMyData/GenerateSession")
            .done(function (sessionID) {
                window.open("https://example.com/Authorize?=" + data, "_blank");
                $('#btnClick').hide();
                $('#btnAuthorize').show();
                $("#step2").removeClass("disabled").addClass("selected");
            });
        });

所以你可以看到在我的 aciton 中生成 SessionID 时,我只需在浏览器中打开一个新选项卡并将他带到相应的网站。

现在我想在最后一步中删除此代码,用户自己必须单击按钮来授权应用程序,如下所示:

$(document).on("click", "#btnAuthorize", function () {
        $.post('/GetMyData/StoreToken')
        .done(function (data) {
            if (data.result == "Success") {
               window.location.href = '/Success';
        }
    });
    });

因此无需用户执行最后一步。我想让我的应用程序为用户执行此操作,并在他的 #btnClick 甚至被触发后每 3 秒执行一次发布。

我怎么能用 jQuery 做到这一点?

附:我想这样做是因为我注意到有些人根本不授权应用程序使用但仍然按下此按钮,然后发生错误,这就是为什么我想禁用单击此按钮,除非他确实授权了该应用程序。

【问题讨论】:

    标签: javascript jquery asp.net asp.net-mvc events


    【解决方案1】:

    应该这样做。

    var r = window.setInterval(function(){
    $.post('/GetMyData/StoreToken')
        .done(function (data) {
            if (data.result == "Success") {
               window.location.href = '/Success';
        }
    });
    },3000);
    

    【讨论】:

    • 是的,就是这样。耶 !! :D
    【解决方案2】:

    如果你想每 X 次执行一些函数,你必须使用 javascript 的 setTimeout/setInterval 函数 (https://www.w3schools.com/jsref/met_win_settimeout.asp)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-03
      • 2013-03-08
      • 1970-01-01
      相关资源
      最近更新 更多