Answer the question
In order to leave comments, you need to log in
Why doesn't modx ajax work on some mobile browsers?
Good afternoon, a
very strange thing is happening on the site https://lesowik.ru - pop-up windows "view prices" that are loaded via ajax
for some reason do not work on some mobile browsers? And it’s very strange on one phone in chrome everything works well, but it doesn’t load in the Yandex browser, on the other phone it opens exactly the opposite in Yandex, but Google doesn’t ?? never encountered this. I will be glad to any comments
here is the code for windows
$(document).ready(function() {
// Вешаем обработчик события "клик" на все ссылки с классом
$(document).on('click', 'a.ajax_link', function(e) {
$('#result').empty();
$('#result').html('<span uk-spinner="ratio: 2"></span>');
// Берем действие из атрибута data-action ссылки
var action = $(this).data('action');
var offset = $(this).data('offset');
var namber = $(this).data('namber');
// Ajax запрос к текущей страницы (а на ней наш сниппет) методом post
$.post(document.location.href, {action: action,offset,namber}, function(data) {
// Выдаем ответ
$('#result').html(data);
})
e.preventDefault();
})
$(document).on('click', 'a.ajax_link2', function(e) {
$('#result2').empty();
$('#result2').html('<span uk-spinner="ratio: 2"></span>');
// Берем действие из атрибута data-action ссылки
var action = $(this).data('action');
var offset2 = $(this).data('offset2');
var namber2 = $(this).data('namber2');
// Ajax запрос к текущей страницы (а на ней наш сниппет) методом post
$.post(document.location.href, {action: action,offset2,namber2}, function(data) {
// Выдаем ответ
$('#result2').html(data);
})
e.preventDefault();
})
})
<?php
// Откликаться будет ТОЛЬКО на ajax запросы
if (empty($_SERVER['HTTP_X_REQUESTED_WITH']) || $_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') {return;}
// Сниппет будет обрабатывать не один вид запросов, поэтому работать будем по запрашиваемому действию
// Если в массиве POST нет действия - выход
if (empty($_POST['action'])) {return;}
// А если есть - работаем
$res = '';
switch ($_POST['action']) {
case 'tovmodal':
$params = array();
$params['tvname'] = 'tovars';
$params['tpl'] = 'modal_tov_id';
$params['where'] = '{"state:=":"Да"}';
$params['docid'] = $_POST['namber'];
$params['limit'] = '1';
$params['offset'] = $_POST['offset'];
$params['tovtitle'] = $_POST['namber'];
$res = $modx->runSnippet('getImageList', $params);
break;
case 'tovmodal2':
$params = array();
$params['parents'] = '1';
$params['depth'] = '1';
$params['hideContainers'] = '1';
$params['tpl'] = 'modal_tov_id2';
$params['tplFirst'] = '{"rowtovar:=":"Да"}';
$params['limit'] = '1';
$params['docid'] = $_POST['namber2'];
$params['offset'] = $_POST['offset2'];
$params['tovtitle'] = $_POST['namber2'];
$params['includeTVs'] = 'tovars,tovar-block,price,galerey,descript2';
$res = $modx->runSnippet('pdoResources', $params);
break;
}
// Если у нас есть, что отдать на запрос - отдаем и прерываем работу парсера MODX
if (!empty($res)) {
die($res);
}
Answer the question
In order to leave comments, you need to log in
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question