- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Тренды маркетинга в 2024 году: мобильные продажи, углубленная аналитика и ИИ
Экспертная оценка Адмитад
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Прошу помощи - выбивает ошибку при вызове формы заказа - плагин 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:
Попробуйте убрать async: false, из всех ajax-запросов.
Попробуйте убрать 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
Значит, надо смотреть, какая причина ошибки в файле /wp-admin/admin-ajax.php.
zixnAjaxUrl - посмотри правильный ли там урл получается и есть ли обработка в wp_ajax в function.php в шаблоне. Ошибка может быть там.
не смотря в текст-код чисто теоретически - превратить синхронный запрос и всю логику синхронную в асинхронную логику заменой false не удастся.
И да, он на самом деле депрекэйтед и больше не работает.
Имхо надо теребить автора кода на предмет переписывания на новую ф-ию fetch() вместо XMLHttpRequest либо переносить логику в отдельную нить - воркер. что еще более сложно.
Тут пишут такое:
https://ru.stackoverflow.com/questions/415919/Ошибка-в-консоли-из-за-history-js
если глобально, то пора переходить на fetch() - мощная современная JS ф-ия для загрузки внешних данных
работающая на мего-хайповых promise - фича из самых новомодных навороченных языков!
Мемори, у Вас навязчивая идея? Все уже прочитали это Ваше мнение парой постов выше.
Нет, не надо. Сначала браузеры:
https://caniuse.com/#feat=fetch
А потом мы.
Нет, не надо. Сначала браузеры:
https://caniuse.com/#feat=fetch
А потом мы.
https://github.com/github/fetch - весит вроде совсем мало. Да и подгружать полифилы нужно по надобности.
не смотря в текст-код чисто теоретически - превратить синхронный запрос и всю логику синхронную в асинхронную логику заменой false не удастся.
И да, он на самом деле депрекэйтед и больше не работает.
Имхо надо теребить автора кода на предмет переписывания на новую ф-ию fetch() вместо XMLHttpRequest либо переносить логику в отдельную нить - воркер. что еще более сложно.
Promise уже довольно старый хайп. Последний это async/await)