Загрузка изображения в вызове ajax не работает в Chrome

javascript jquery ajax asp.net-ajax dynamics-crm-2013

946 просмотра

3 ответа

У меня есть HTML-страница, где я хочу отобразить обработку loading imageмежду ajax callдля сохранения и его успеха. И эту страницу я поместил в динамический crm как веб-ресурс.

Проблема в том, что загрузка работает нормально в mozilafirefox, но не работает в chrome.

Автор сценария:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>

Другой код:

<img src="sm_loading.gif" id="loading" style="display:none" />
<input class="custom-btn" id="btnsave" value="Save" onclick="SaveData();"  type="button">
function SaveData() {
    $('#loading').show();
    var stocktrack = {};
    stocktrack.sm_Description = descval;
    var jsonPO = window.JSON.stringify(stocktrack);
    var oDataUri = serverUrl + "/XRMServices/2011/OrganizationData.svc/sm_stocktrackingSet";
    $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        datatype: "json",
        url: oDataUri,
        data: jsonPO,
        async: false,
        beforeSend: function (XMLHttpRequest) {
            XMLHttpRequest.setRequestHeader("Accept", "application/json");
        },
        success: function (data, textStatus, XmlHttpRequest) {
            debugger;
            $('#loading').hide();
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            alert(textStatus);
        }
    });
}

Пожалуйста, предложите, если есть какое-либо решение.

Автор: chhaya_patel Источник Размещён: 08.11.2019 10:59

Ответы (3)


0 плюса

Я запустил ваш код в Firefox, и он работал. Я тоже бегал в Chrome и ничего не получил, как ты и сказал. Однако, включив отладчик в Chrome, используя F12, я получил следующую ошибку.

Синхронный XMLHttpRequest в основном потоке устарел из-за его пагубных последствий для конечного пользователя. Для получения дополнительной помощи, проверьте https://xhr.spec.whatwg.org/ .

Чтобы исправить это, установите флаг async внутри вашего вызова ajax равным true.

Если вы хотите, чтобы ваш пользователь не нажимал на вещи во время асинхронного вызова, что вполне понятно, я предлагаю вам использовать прозрачный слой блокировки.

Автор: javaMoca Размещён: 20.08.2016 07:29

0 плюса

Решение

Я получил свой ответ.

С использованием setTimeout (function () {.. наш код ..}, 10); Я могу отобразить загрузку в Chrome с помощью async: false.

Ссылка Ссылка:

https://www.experts-exchange.com/questions/25187194/jQuery-async-false-with-beforeSend.html

Автор: chhaya_patel Размещён: 20.08.2016 10:35

0 плюса

Панель загрузки работает только с async: True, в противном случае она будет работать только в Firefox, и в большинстве других браузеров панель загрузки не отображается. Но с асинхронным ложным будет выполнен весь код ниже, кроме успеха и ошибки (функции обратного вызова).

Автор: haasampath Размещён: 20.03.2017 09:57
Вопросы из категории :
32x32