Контент всегда обновляется по второму клику, а не по первому? - PullRequest
0 голосов
/ 31 октября 2019

Написание 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");
    }
}

Итак, чтобы повторить;Звонок работает. Но это работает только на втором щелчке моего элемента, а не на первом. Могу ли я каким-то образом заставить текст загружаться всякий раз, когда он считается готовым, вместо того, чтобы снова щелкнуть мышью или исправить это каким-либо другим способом?

1 Ответ

1 голос
/ 31 октября 2019

Функция getSessionCookieAsString возвращает само обещание. Можете ли вы попробовать ниже код.

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

отредактировал его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...