Всем добрый день. Я новичок в разработке, хочу спросить у знающих людей, бьюсь с проблемой целый день.
В чем суть проблемы. Есть jq ui slider ( ползунок ), нужно что бы данные с ползунка приходили в письме на почту. Данные с ползунка выходят в input, данные с input уходят в переменную valueFromUiSlider , а как данные с js переменной вывести в php (пробовал $str = $_POST["valueFromUiSlider"]; но не вышло), не могу понять что нужно писать, весь день гуглю, ничего найти не могу.
Пример части JS.
$("#slider").slider({
value:0,
min: 0,
max: 100,
step: 1,
slide: function( event, ui ) {
var valueFromUiSlider = ui.value;
$( "#amount" ).val( ui.value + " " + "кВт" );
}
});
$( "#amount" ).val( "кВт" + " " + $( "#slider" ).slider( "value" ) );
Часть кода php ( по такому примеру другие переменные выводятся все работает ) :
header("Content-Type: text/html; charset=utf-8");
$email = htmlspecialchars($_POST["email"]);
$name = htmlspecialchars($_POST["name"]);
$tel = htmlspecialchars($_POST["tel"]);
$str = $_POST['valueFromUiSlider'];
$check = is_array($_POST['check']) ? $_POST['check'] : array();
$check = implode (', ', $check );
$radio = htmlspecialchars($_POST["radio"]);
Не знаю какие еще данные предоставить, что бы лучше могли меня понять.
а как вы получаете остальные данные в php, которые работают? Ответив на этот вопрос, я уверен, вы ответите и на вопрос как получить нужную вам переменную. Я знаю только два способа отправить какие-либо данные на php: 1) через html-тег <form> и 2) через js ajax'ом.
По сути вы скинули бесполезный код, и упрятали самое важное: как вы передаёте данные, что одни данные приходят, а другие нет.
Я правильно понял, что вы имели ввиду про это?
$.ajax({
type: 'POST',
url: $form.attr('action'),
data: $form.serialize(),
})
Только я не понимаю как с этим работать. Но пытаюсь разобраться
Никита Раткевич, да именно это, по сути это аналог html-тега form, только с помощью тега у нас происходит переход на новую страницу(или перезагрузка текущей), а с помощью ajax эта страница (или если по грамотней - ответ от сервера) запишется в переменную, без перехода на новую страницу вот тут:
$.ajax({
type: ... ,
url: ... ,
data: ... ,
success: function(data) { // вот здесь в скобочках мы назвали переменную data и по этому имени мы обращаемся внутри функции, это и есть ответ от сервера.
console.log(data);
}
})
Т.е. простыми словами:
Если на php у нас написано echo "+"; то с помощью тега form мы перейдем на страницу где написано "+", а с помощью ajax мы этот же плюсик получим в консоли (если оформим как выше: console.log(data);) И не происходит перезагрузки страницы. Вот поэтому ajax предпочтительнее тега form, хоть по сути делают они одно и тоже.
Это было лирическое отступление, а теперь перейдем к делу:
$.ajax({
type: 'POST',
url: $form.attr('action'), // отправляете запрос на адрес указанный в атрибуте action у тега form, тут врятли ошибка
data: $form.serialize(), // отправка данных, раз какие-то данные приходят, значит тут тоже врятли ошибка, просто вы не допихнули туда все данные, .serrialze() берет все инпуты внутри указанной формы, а значит внутри формы у вас нету инпута с name="valueFromUiSlider"
})
Это один из способов как прибавить к вашим данным valueFromUiSlider - добавить инпут внутрь формы и присвоить ему нужное значение;
Но есть еще другой способ:
var data = $form.serialize(); // собрали все инпуты с формы
var finalData = data + "&valueFromUiSlider=" + valueFromUiSlider; // добавляем нужную нам переменную
$.ajax({
type: 'POST',
url: $form.attr('action'),
data: finalData,
})
Круто! Не представляете как я рад, что встретил вас!) спасибо все заработало) с 9 утра мучаюсь) Отдельное спасибо за большой развернутый ответ. Вам всего самого наилучшего)
в котором четко и просто написано "JavaScript выполняется на стороне пользователя, а PHP на стороне сервера, то значение не может быть передано напрямую"
И ниже три способа как работать с данными.
Что именно у вас не получается? Каким образом вы хотите получить переменную valueFromUiSlider в суперглобальном массиве $_POST если вы ее туда не записали?
Благодарю, что обратили внимание на мою проблему, я почти ничего не понимаю в php, понял, что php реализуется методом POST, нашел какие-то варианты в интернете, решил создать в php переменную с которую вставил $_POST['valueFromUiSlider']; Понимаю что для профи это бред, но мне бы очень помогло если бы немного объяснили, что не правильно делаю
В двух словах..
php - это серверный язык, который отрабатывает на сервере, а пользователю в браузер он может только отправить вывод. Например <?php echo 'Hello';?>
И пользователю в браузер прийдет только Hello
js (сейчас рассматриваем его только как подключаемые файлы или отдельные скрипты) - он подключается на странице и отрабатывает в браузере у пользователя.
Исходя из этого, для вашей задачи, переменную из js можно передать в php ajax-ом. вот простой пример
post и get - это способы передать данные с фронта на бек. Получить на бекенде их можно соответственно в суперглобальных масивах $_POST и $_GET.
Но на мой взгляд, если вы учитесь, вы зашли немного не с той стороны. Сначала стоит выучить/разобрать синтаксис языка на котором пишете, а потом уже делать какие-то задачи.