Проблема с ajax, как выполнить снипет через ajax.
Проблема с ajax, как выполнить снипет через ajax.
файл js:
$(document).ready(function() {
$.ajax({
url: '/data2.html',
type: 'POST',
dataType: 'html'
Документ data2 создан в корне ресурсов.
В modx revo отключено Содержимое-Типы содержимого .html (не хочу у страниц сайта иметь на конце .html)
Документ data2.html содержит сниппет.
Проблема что не работает так, но если включаю Содержимое-Типы содержимого .html, то скрипт выполняется
пробовал в документе data2 ставить seourl data2, data2.html, data2.php и ничего не помогает.
пробовал и так
$(document).ready(function() {
$.ajax({
url: '[[~26]]',
type: 'POST',
dataType: 'html'
не помогло.
Комментарии: 3
Устанавливаешь не ниже SendIt 1.0.4. Создаёшь пресет со своим сниппетом. Потом в JS делаешь так
А чтобы получить ответ можно сделать так
document.addEventListener('si:init', (e) => {
SendIt?.setComponentCookie('sitrusted', '1');
SendIt?.Sending?.prepareSendParams(document, 'custom');
})
Код выше запустит твой сниппет сразу после загрузки скриптов SendIt, но ты можешь указать любое другое нужное тебе событие.А чтобы получить ответ можно сделать так
document.addEventListener('si:send:after', (e) => {
const {action, target, result, headers, Sending} = e.detail;
console.log(result);
})
Решил частично проблему — просто у страницы поставил галочку «контейнер» и тогда страница из /page.html становится /page/
можно ещё окончание / убрать редиректом через htacess
можно ещё окончание / убрать редиректом через htacess
JS запрос к request.php(куда хотите его кладите в нем подключение index путь правьте), можете этот запрос повесить на клик кнопки
p = new URLSearchParams();
//тут передаем какие то параметры
p.set('action', 'runSnippet');
p.set('blabla', '1212');
fetch('/request.php', {
method: 'POST',
body: p
})
.then((response) => {
return response.json();
})
.then(( r ) => {
console.log( r);
// тут получает ответ, делайте что угодно, например:
document.querySelector('body').html(r.out);
});
PHP request.phpif(empty($_POST['action'])){
return;
}
define('MODX_API_MODE', true);
require 'index.php';
$pdo = $modx->getService('pdoTools');
$resp = [
'success' => 1
];
switch ($_POST['action']){
case 'runSnippet':
$resp['out'] = $modx->runSnippet('snippetBla', [ 'parents' => 1111] );
echo json_encode($resp);return;
break;
}
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.