[От новичка] Как вставить сниппет в свой js ?
Здравствуйте.
Сразу отступление — я не разработчик, и в MODX особо не разбираюсь.
Подскажите пожалуйста как в свой скрипт AJAX формы, вставить сниппет отправки, а не внешний файл .php?
Сейчас мой код выглядит так:
Сразу отступление — я не разработчик, и в 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');
}
});
}
Всем потратившим время на просмотр и ответ — спасибо! Комментарии: 10
Непосредственно сниппет/его результат — никак. Вы можете отправлять аяксом запрос на конкретную/текущую страницу, где будет вызван сниппет, который будет возвращать результат при соответствующем аякс-запросе.
Подробнее.
Подробнее.
Спасибо! Хоть это и сложно для меня, но я понимаю, что это самый верный путь. Спасибо.
Действительно, как и сказал Максим, это нельзя сделать. Правда мне не понятно зачем это вам нужно? Что делает ваш сниппет?
Исходя из контекста он должен принять значения и что-то вернуть.
Это отправка формы, с моего статичного сайта.
Создать на сайте новую страницу, пусть ее alias будет post. Шаблон пустой, далее в контент вставляете свой сниппет, сохраняете. url будет примерно такой:
url: "/post.html"
Спасибо, интересный метод. Но думаю, что будет лучше для меня оставить как есть (внешний файл), и потихоньку вникнуть и понять основы Ajax из урока, что дал Максим первым постом.
Ну тогда все элементарно. Оставляем
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.
Большое спасибо за подробный ответ!
добрый день. подскажите пожалуйста что я сделала не так.
у меня похожая ситуация: мне нужно отправить форму с помощью аякса и пхп.
сделала свой сниппет 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;
});
});
как итог, сообщение с ошибкой — Ошибка. Сообщение не отправлено!
подскажите пожалуйста, может у меня неправильный алгоритм действий и я что то не сделала, или как то не так подключила. Подскажите пожалуйста.
Заранее, спасибо
у меня похожая ситуация: мне нужно отправить форму с помощью аякса и пхп.
сделала свой сниппет 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;
});
});
как итог, сообщение с ошибкой — Ошибка. Сообщение не отправлено!
подскажите пожалуйста, может у меня неправильный алгоритм действий и я что то не сделала, или как то не так подключила. Подскажите пожалуйста.
Заранее, спасибо
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.