Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Передача результата функции jquery на другу страницу (https://javascript.ru/forum/events/68818-peredacha-rezultata-funkcii-jquery-na-drugu-stranicu.html)

WhiteFox 11.05.2017 12:55

Передача результата функции jquery на другу страницу
 
Доброго времени суток, есть такой вопрос, на который не нашел ответа (или не понял). Написал калькулятор на одной странице, он должен отправлять значения input-ов в смету. Если смета находится в том же файле то все работает нормально, а если смета в другом файле, то функции уже не действуют, так как работают только на текущей странице. Выносить смету в другой файл надо из-за программы, которая делает из сметы pdf файл. wkhtmltopdf. Как можно передать результат функции с калькулятора на страницу сметы? Не знаю, какой код надо прикреплять, чтобы было понятнее.

laimas 11.05.2017 13:06

А отправкой формы почему нельзя?

WhiteFox 11.05.2017 13:08

Допустим я формой передам одно значения, а в функциях лежат вычисления и результаты, их тоже можно передать формой?

laimas 11.05.2017 13:14

Цитата:

Сообщение от WhiteFox
Допустим я формой передам одно значения

Формой можно передать значений, объем которых ограничивается только методом передачи.

Цитата:

Сообщение от WhiteFox
а в функциях лежат вычисления и результаты

Функция вообще-то должна только вычислять, а результат отображать для пользователя. Разве этот результат нельзя в ту же форму помещать?

WhiteFox 11.05.2017 13:18

Можно пример?)
$(".btn_next").click(function (){
		var guest = $(".s_data").val();
		$('.v_data').val(guest);
	});

Вот самая простая функция с калькулятора

ksa 11.05.2017 13:28

Цитата:

Сообщение от WhiteFox
Можно пример?

Вот вариант передачи ГЕТ-параметра на другую страницу

$(".btn_next").click(function (){
	var guest = $(".s_data").val();
	top.location='http://mysite?prm='+guest;
});

laimas 11.05.2017 13:30

Если .val(), это уже поле формы, зачем только из одного поля .s_data переписывать его в другое .v_data не совсем понятно.

Пример чего надо, если этого достаточно. Все просто - все что надо передать на сервер помещайте в поля формы, если надо то можно и в скрытые.

Никто кроме вас не знает чего вы считаете, и что нужно передать, а что гадать нет смысла.

laimas 11.05.2017 13:31

ksa,
проще готовую форму отослать без всяких формирований URL.

ksa 11.05.2017 13:34

laimas, х/з чего ТСу будет проще... Может в итоге он вообще запрос будет слать с той страницы...

laimas 11.05.2017 13:39

Ну если калькулятор, то вопрос - что он считает? Наверное же по выбору каких-то параметров. А если так, то это тоже элементы формы. А если их как выбор пользователя тоже в итоговом документе нужно отразить наряду с результатом/результатами расчета, то зачем готовое к оправке перемещать в URL?

Пусть показывает что к чему, иначе...

WhiteFox 11.05.2017 13:46

Это на первой странице
<ul class="data_wrap">
<li class="data">Дата (ориентировочно)</li>
<li><input type="date" name="data" class="s_data"></li>
</ul>

Это на второй
<input type="text" name="vdata" id="v_data">

value должно передаваться из одного инпута в второй функцией

laimas 11.05.2017 13:52

Что значит это на первой, а это на второй?
Если вам надо на второй странице к принятым данным формы из первой страницы еще что-то добавить, то это уже не имеет отношение к калькулятору. Добавляйте, какие проблемы, форму от калькулятора то вы получили уже.

WhiteFox 11.05.2017 14:02

Попробую яснее.
Есть калькулятор из 5 шагов (index.php), в нем клиент клацает на инпуты, вот ссылка
http://new.igrology.com/
так же есть файл сметы (smeta.php), в которую заносятся данные инпутов с калькулятора.
В конце шагов в калькуляторе, файл сметы с введенными данными конвертируется в пдф и оправляется клиенту на почту.
Так вот, функция передачи значения инпута не видит файл сметы, как это можно решить

laimas 11.05.2017 14:21

У вас пошаговый сбор информации, но нет формы.

Элементы формы можно описывать и вне ее тега, то есть, если не удобно так в верстке:

<form>
секции с элементами формы
</form>

то можно и так:


секции с элементами формы, и у элементов указывается связь с формой как form="идентификатор формы"

<form id="идентификатор формы" action="url передачи"><button>Оправить</button></form> - разместив этот код где удобно, в конце всей баталии (заполнения) к примеру.


Заполнили форму, отправили, на странице получателе получили.

WhiteFox 11.05.2017 14:24

Через просто action получается, но страница перезагружается. А через ajax страница не перезагружается но смета не получает данные
$("#up1").submit(function(e) {
		e.preventDefault();
		var up1 = $(this).serialize();
		$.ajax({
			type: "POST",
			url: "../smeta.php",
			data: up1,
			success: function(){
			}
		});
	});

laimas 11.05.2017 14:30

Если вам надо асинхронным запросом передать форму, то data: $(this).serialize(), это и есть ее передача. Вот только в коде я не видел тега формы (хотя не углублялся сильно). Но если она есть, и отправляется, то либо "../smeta.php" неверный, либо на на сервере в smeta.php проблемы. Отладчик же в браузере есть, проверить то можно.

laimas 11.05.2017 14:35

Проверил ваши запросы - первый асинхронный запрос не отправляет параметров, второй только форму с личными данными, причем не проверяя ничего. Разберитесь с формами - если выбор и личные данные, это две формы, значит нужно либо "склеить" их данные, либо, что проще, иметь одну форму, у вас же все на одной странице.

WhiteFox 11.05.2017 14:36

а в функции нельзя что то такое указать, что бы она увидела в какой файл должно переходить value? так было бы проще

laimas 11.05.2017 14:49

Какой функции? Можно конечно получить коллекцию всех полей ввода на странице, обойти эту коллекцию циклом, получить их значения и имена, и сформированные данные отправить.
Но разве не проще сделать простое - перенести открывающий тег формы личных данных до первого поля выбора?

И достаточно будет $(this).serialize().

WhiteFox 11.05.2017 14:52

вроде понял) спасибо)

laimas 11.05.2017 14:57

Можно же и так. У вас форма отправления личных данных имеет идентификатор sendpdf. Добавьте всем полям выбора значений атрибут form="sendpdf" и они будут отправляться с этой формой. Открывающий тег формы переносить не надо.


Часовой пояс GMT +3, время: 14:35.