Synchronous XMLHttpRequest on the main thread is deprecated... Прошу помощи

12
Robick
На сайте с 17.08.2007
Offline
173
4616

Прошу помощи - выбивает ошибку при вызове формы заказа - плагин Woocommerce Buy one click:

jquery.min.js:4 [Deprecation] Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check https://xhr.spec.whatwg.org/.

send @ jquery.min.js:4

ajax @ jquery.min.js:4

(anonymous) @ form.js?ver=4.9.2:152

dispatch @ jquery.min.js:3

r.handle @ jquery.min.js:3

Код формы -

//(function (jQuery, undefinde) {


jQuery(document).ready(function () {
jQuery(document).on('click', '.popup .close_order, .overlay', function () {
jQuery('.popup, .overlay').css({'opacity': '0', 'visibility': 'hidden'});
jQuery('#contactform input:checkbox').removeAttr("checked");
jQuery('#contactform input[type=hidden].valTrFal').val('valTrFal_disabled');
});

jQuery(function () {
jQuery('#contactform input:checkbox').change(function () {
if (jQuery(this).is(':checked')) {
jQuery('#contactform input[type=hidden].valTrFal').val('valTrFal_true');
} else {

jQuery('#contactform input[type=hidden].valTrFal').val('valTrFal_disabled');
}
});
});
//Доп сообщение

jQuery(document).on('click', '.popummessage .close_message, .overlay_message', function () {
jQuery('.popummessage, .overlay_message').css({'opacity': '0', 'visibility': 'hidden'});

});
});
//Обработка клика по кнопке
// Для формы - отправка в ajax class
function saveButton(text, url, objThis) {

jQuery.ajax({
type: "POST",
url: url,
async: false,
data: {
action: 'buybuttonform',
text: text
},
success: function (response) {
var obj = JSON.parse(response);
if (obj.num == "1") { //Действие по умолчанию
jQuery(".buyButtonOkForm").after("<span>" + obj.result + "</span>");
}
if (obj.num == "2") { // Закрытие формы через action мил сек
jQuery(".buyButtonOkForm").after("<span>" + obj.result + "</span>");
jQuery('.popup, .overlay').fadeOut(obj.action);


}
if (obj.num == "3") { // Показать сообщение action
jQuery('.popup, .overlay').hide();
// console.log(jQuery(objThis).next());
jQuery('.popummessage, .overlay_message').css('opacity', '1');
jQuery('.popummessage, .overlay_message').css('visibility', 'visible');
//alert("Готово");

}
if (obj.num == "4") { // Сделать редирект action
jQuery(".buyButtonOkForm").after("<span>" + obj.result + "</span>");
self.location = obj.action;
}
//alert(obj.num);

//jQuery(".buyButtonOkForm").after("<span>" + obj.result + "</span>");

}
});

}

function getAjaxUrl() {

return buyone_ajax.ajaxurl;
}


jQuery(document).ready(function () {

jQuery(document).on('click', '#contactform .buyButtonOkForm', function (e) {
//НА странице появляется две кнопки TODO
e.preventDefault();
var objButton = this;
var parentForm = jQuery(this).parent('#contactform');

var allRequired;
var errorSending = "no";
var txtname = jQuery(parentForm).find("input[name=txtname]").val();
var txtphone = jQuery(parentForm).find("input[name=txtphone]").val();
var txtemail = jQuery(parentForm).find("input[name=txtemail]").val();
var message = jQuery(".buymessage").val();
var buy_nametovar = jQuery(parentForm).find("input[name=buy_nametovar]").val();
var buy_pricetovar = jQuery(parentForm).find("input[name=buy_pricetovar]").val();
var buy_idtovar = jQuery(parentForm).find("input[name=buy_idtovar]").val();
var custom=jQuery(objButton).attr('data-custom');

jQuery(".b1c-form").find(".buyvalide").each(function () {
if (jQuery(this).attr("required") != undefined) { // если хотя бы одно поле обязательно
allRequired = "no";
//alert("0");
}

});

jQuery(".b1c-form").find(".buyvalide").each(function () { // проверяем заполенность полей

if (jQuery(this).val().length < 1) {

if (allRequired == "no" && jQuery(this).attr("required") != undefined) {

errorSending = 1;
}
if (allRequired == 1) {

errorSending = 1;
}
}
});

if (errorSending === "no") {
//alert("2");

var infozakaz = {
txtname: txtname,
txtphone: txtphone,
txtemail: txtemail,
message: message,
nametovar: buy_nametovar,
pricetovar: buy_pricetovar,
idtovar: buy_idtovar,
custom: custom,
};

var zixnAjaxUrl = getAjaxUrl();
saveButton(infozakaz, zixnAjaxUrl, objButton);

}

});

});
//Форма рисователь
jQuery(document).ready(function () {
jQuery(document).on('click', 'a.clickBuyButton', function (e) {
e.preventDefault();
var zixnAjaxUrl = getAjaxUrl();
var butObj = this;

var urlpost = window.location.href;
var productid = jQuery(butObj).attr('data-productid');
//alert(productid);

jQuery.ajax({
type: "POST",
url: zixnAjaxUrl,
async: false,
data: {
action: 'getViewForm',
urlpost: urlpost,
productid: productid
},
success: function (response) {
// console.log(response);
jQuery('#formOrderOneClick').remove();
jQuery(butObj).after(response);
jQuery('.popup, .overlay').css('opacity', '1');
jQuery('.popup, .overlay').css('visibility', 'visible');


}
});
});
jQuery(document).on('click', 'a.clickBuyButtonCustom', function (e) {
e.preventDefault();
var zixnAjaxUrl = getAjaxUrl();
var butObj = this;

var urlpost = window.location.href;
var productid = jQuery(butObj).attr('data-productid');
var name = jQuery(butObj).attr('data-name');
var count = jQuery(butObj).attr('data-count');
var price = jQuery(butObj).attr('data-price');

jQuery.ajax({
type: "POST",
url: zixnAjaxUrl,
async: false,
data: {
action: 'getViewFormCustom',
urlpost: urlpost,
productid: productid,
name: name,
count: count,
price: price,
},
success: function (response) {
// console.log(response);
jQuery('#formOrderOneClick').remove();
jQuery(butObj).after(response);
jQuery('.popup, .overlay').css('opacity', '1');
jQuery('.popup, .overlay').css('visibility', 'visible');


}
});
});
});

:beer:

MT
На сайте с 17.01.2017
Offline
22
#1

Попробуйте убрать async: false, из всех ajax-запросов.

Robick
На сайте с 17.08.2007
Offline
173
#2
MikeTheRaven:
Попробуйте убрать async: false, из всех ajax-запросов.

удалил, предыдущее предупреждение пропало, но появилась новая ошибкаЖ

jquery.min.js:4 POST http://site.ru/wp-admin/admin-ajax.php 500 (Internal Server Error)

send @ jquery.min.js:4

ajax @ jquery.min.js:4

saveButton @ form.js?ver=4.9.2:31

(anonymous) @ form.js?ver=4.9.2:134

dispatch @ jquery.min.js:3

r.handle @ jquery.min.js:3

S
На сайте с 30.09.2016
Offline
469
#3

Значит, надо смотреть, какая причина ошибки в файле /wp-admin/admin-ajax.php.

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
CP
На сайте с 12.08.2009
Offline
101
#4

zixnAjaxUrl - посмотри правильный ли там урл получается и есть ли обработка в wp_ajax в function.php в шаблоне. Ошибка может быть там.

Профессиональный frontend: JS, html,css, Single-Page App (/ru/forum/964386)
Мемори
На сайте с 11.11.2012
Offline
105
#5

не смотря в текст-код чисто теоретически - превратить синхронный запрос и всю логику синхронную в асинхронную логику заменой false не удастся.

И да, он на самом деле депрекэйтед и больше не работает.

Имхо надо теребить автора кода на предмет переписывания на новую ф-ию fetch() вместо XMLHttpRequest либо переносить логику в отдельную нить - воркер. что еще более сложно.

LEOnidUKG
На сайте с 25.11.2006
Offline
1764
#6
✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
Мемори
На сайте с 11.11.2012
Offline
105
#7

если глобально, то пора переходить на fetch() - мощная современная JS ф-ия для загрузки внешних данных

работающая на мего-хайповых promise - фича из самых новомодных навороченных языков!

S
На сайте с 30.09.2016
Offline
469
#8

Мемори, у Вас навязчивая идея? Все уже прочитали это Ваше мнение парой постов выше.

LEOnidUKG
На сайте с 25.11.2006
Offline
1764
#9
если глобально, то пора переходить на fetch() -

Нет, не надо. Сначала браузеры:

https://caniuse.com/#feat=fetch

А потом мы.

CP
На сайте с 12.08.2009
Offline
101
#10
LEOnidUKG:
Нет, не надо. Сначала браузеры:
https://caniuse.com/#feat=fetch

А потом мы.

https://github.com/github/fetch - весит вроде совсем мало. Да и подгружать полифилы нужно по надобности.

Мемори:
не смотря в текст-код чисто теоретически - превратить синхронный запрос и всю логику синхронную в асинхронную логику заменой false не удастся.

И да, он на самом деле депрекэйтед и больше не работает.

Имхо надо теребить автора кода на предмет переписывания на новую ф-ию fetch() вместо XMLHttpRequest либо переносить логику в отдельную нить - воркер. что еще более сложно.

Promise уже довольно старый хайп. Последний это async/await)

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий