[От новичка] Как вставить сниппет в свой js ?

Здравствуйте.
Сразу отступление — я не разработчик, и в MODX особо не разбираюсь.

Подскажите пожалуйста как в свой скрипт AJAX формы, вставить сниппет отправки, а не внешний файл .php?
Сейчас мой код выглядит так:

if(email !=""){

          var data = $("#form").serialize();

          $.ajax({
            url: "/rest.php", // Как вместо этого файла вставить сниппет?
            type: "POST",
            data: data,
            cache: false,
            success: function (json) {
              window.location.assign("/thankyou.html"); 
            },
            beforeSend: function(){
              $('.loader').addClass('is-visible');
            },
            complete: function() {
              $('.loader').removeClass('is-visible');
            }
          });
        }
Всем потратившим время на просмотр и ответ — спасибо!
Сергей Сергеевич
30 января 2016, 15:07
869
0

Комментарии: 10

Максим Кузнецов
30 января 2016, 18:42
0
Непосредственно сниппет/его результат — никак. Вы можете отправлять аяксом запрос на конкретную/текущую страницу, где будет вызван сниппет, который будет возвращать результат при соответствующем аякс-запросе.

Подробнее.
    Сергей Сергеевич
    31 января 2016, 08:50
    0
    Спасибо! Хоть это и сложно для меня, но я понимаю, что это самый верный путь. Спасибо.
Волков Николай
30 января 2016, 21:05
0
Действительно, как и сказал Максим, это нельзя сделать. Правда мне не понятно зачем это вам нужно? Что делает ваш сниппет?
    Роман Садоян
    30 января 2016, 22:23
    0
    Исходя из контекста он должен принять значения и что-то вернуть.
    Сергей Сергеевич
    31 января 2016, 08:51
    0
    Это отправка формы, с моего статичного сайта.
Николай
30 января 2016, 21:30
0
Создать на сайте новую страницу, пусть ее alias будет post. Шаблон пустой, далее в контент вставляете свой сниппет, сохраняете. url будет примерно такой:
url: "/post.html"
    Сергей Сергеевич
    31 января 2016, 08:56
    0
    Спасибо, интересный метод. Но думаю, что будет лучше для меня оставить как есть (внешний файл), и потихоньку вникнуть и понять основы Ajax из урока, что дал Максим первым постом.
      Николай
      31 января 2016, 10:40
      1
      +1
      Ну тогда все элементарно. Оставляем
      url: "/post.php"
      php файлик складываем рядом с index.php. Далее открываем его, и заменяем содержимое на:

      <?php
      require_once 'config.core.php';
      require_once MODX_CORE_PATH.'model/modx/modx.class.php';
      $modx = new modX();
      $modx->initialize('web');
      $modx->getService('error','error.modError', '', '');
      
      if ($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') {return;}
      
      echo $modx->runSnippet("snippet_name", $_POST);
      Первые 5 строчек это подключение API modx, 6 строчка это прием только ajax запросов, т.е просто обратившись site.ru/post.php в ответ будет выдана белая страничка. Ну и запуск нашего сниппета и передача ему всех POST полей. Можно не передавать конечно, в сниппете будут доступны все эти поля, но мне удобнее так вместо $_POST['fields'] использовать $fields. Все. И обязательно echo, чтобы наш js скрипт смог получить ответ. В самом сниппете можно делать return.
Татьяна
13 ноября 2018, 15:39
0
добрый день. подскажите пожалуйста что я сделала не так.

у меня похожая ситуация: мне нужно отправить форму с помощью аякса и пхп.
сделала свой сниппет MySnippet код

if ($_SERVER[«REQUEST_METHOD»] == «POST») {
if (isset($_POST['name'])) {$name = $_POST['name'];}
if (isset($_POST['phone'])) {$phone = $_POST['phone'];}
if (isset($_POST['formData'])) {$formData = $_POST['formData'];}

$to = «mail@yandex.ru»;
$sendfrom = «mail@yandex.ru»;
$headers = «From: ». strip_tags($sendfrom). "\r\n";
$headers .= «Reply-To: ». strip_tags($sendfrom). "\r\n";
$headers .= «MIME-Version: 1.0\r\n»;
$headers .= «Content-Type: text/html;charset=utf-8 \r\n»;
$subject = "$formData";
$message = "$formData
Имя : $name
Телефон: $phone";
$send = mail ($to, $subject, $message, $headers);
if ($send == 'true')
{
echo 'Спасибо за отправку вашего сообщения!';
}
else
{
echo 'Ошибка. Сообщение не отправлено!';
}
} else {
http_response_code(403);
echo «Попробуйте еще раз»;
}

в корне сайта где index (не в папку core) положила файл пхп код которого

<?php

require_once 'config.core.php';
require_once MODX_CORE_PATH.'model/modx/modx.class.php';
$modx = new modX();
$modx->initialize('web');
$modx->getService('error','error.modError', '', '');

if ($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') {return;}

echo $modx->runSnippet(«MySnippet», $_POST);
?>

в js файле указала файл пхп который лежит рядом с index код

$(document).ready(function () {
$(«form»).submit(function () {
// Получение ID формы
var formID = $(this).attr('id');
// Добавление решётки к имени ID
var formNm = $('#' + formID);
$.ajax({
url: 'runmusnippet.php',
type: «POST»,
data: formNm.serialize(),
success: function (data) {
// Вывод текста результата отправки
$(formNm).html(data);
},
error: function (jqXHR, text, error) {
// Вывод текста ошибки отправки
$(formNm).html(error);
}
});
return false;
});
});

как итог, сообщение с ошибкой — Ошибка. Сообщение не отправлено!

подскажите пожалуйста, может у меня неправильный алгоритм действий и я что то не сделала, или как то не так подключила. Подскажите пожалуйста.

Заранее, спасибо