javascript - 内容总是在第二次点击时更新,而不是第一次?

标签 javascript c# ajax promise

编写一些 JavaScript 来更新 Bootstrap 3 Popover 中的一些文本。我可能没有正确使用 Promises,但我希望文本在我第一次单击时出现在弹出窗口中,而不是在我单击它两次时出现。

Javascript 调用用 C# 编写的本地代理。用于设置弹出窗口本身的 JavaScript 如下所示:

$(function () {
    $('#session-cookie-showcase').popover({
        html: true
    });
    $('#session-cookie-showcase').on('show.bs.popover', function () {
        Promise.resolve(getSessionCookieAsString()).then(function (value) {
            $('#session-cookie-showcase').data('bs.popover').config.content = value;
        })
    })
})

ajax 调用如下所示:

async function getSessionCookieAsString(callback) {
    return $.ajax({
        type: "GET",
        url: AppName + '/api/omitted/hentSessionCookieSomTekst',
        dataType: "json",
        contentType: "application/json",
        success: ((result) => function (result) { return result }),
        error: ((XMLHttpRequest, textStatus, errorThrown) =>
            handleWebserviceCallError(XMLHttpRequest, textStatus, errorThrown, false))
    });
}

最后,C# 代理如下所示:

[HttpGet("hentSessionCookieSomTekst")]
public string HentSessionCookieSomTekst()
{
    string userKey = _configuration.GetSection("SessionKeys:User").Value;
    if (!string.IsNullOrEmpty(userKey))
    {
        BrugerObjekt bruger = HttpContext.Session.Get<BrugerObjekt>(userKey);
        return JsonConvert.SerializeObject(bruger.ToString('n'));
    }
    else
    {
        return JsonConvert.SerializeObject("NULL");
    }
}

所以重申一下;通话有效。但它只适用于我的元素的第二次单击,而不是第一次。我可以以某种方式让文本在被认为准备就绪时加载,而不必再次单击或以其他方式修复此问题吗?

最佳答案

getSessionCookieAsString 函数本身返回一个 promise 。你可以尝试下面的代码吗?

getSessionCookieAsString().done(函数(值){ $('#session-cookie-showcase').data('bs.popover').config.content = value; });

已编辑。

关于javascript - 内容总是在第二次点击时更新,而不是第一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58641492/

相关文章:

jquery - 如何使用 jQuery 对本地 Web 服务进行 RESTful 调用

javascript - 在 HTA 应用程序中打开网站

javascript - 如何避免警告 : chunk styles [mini-css-extract-plugin] Conflicting order in GatsbyJS?

javascript - jQuery 如何在内容更改后获取 div 的高度

c# - 用于插入值的参数化查询

c# - 应该如何从两个几乎相同的 Controller Action 转移到一个处理两个必要任务的 Action ?

javascript - polymer 中可调整大小的元素

c# - 未知类型的动态转换以进行序列化

ajax - 无法通过 jQuery Ajax 发送 POST 请求

javascript - 是否可以从 JavaScript 中的嵌套处理程序方法访问类方法?