Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   тег INPUT передача методом POST (https://javascript.ru/forum/dom-window/35830-teg-input-peredacha-metodom-post.html)

Antmike 23.02.2013 20:33

тег INPUT передача методом POST
 
Всем привет!

Есть форма.
Input c автокомплитом - 2 штуки (вводятся начальная точка маршрута и конечная точка маршрута)
Есть несколько select`ов
----
Итак, функцией из скрипта яндекс карт, получаем два значение: длина и время в пути.

Далее необходимо посчитать тариф, на входе два параметра(расстояние и время):

function getPrice(distantion, time){
             // переводим метры в километры 
             var distOrder = Math.ceil(distantion/1000);
             // получаем время в удобном виде
             var timeOrder = Math.floor(time);
             // запроса для передачи в скрипт расчета
             var query = 'distance='+distOrder+"&time="+timeOrder;
             $.ajax( {
                type: "post",
                url: "model/getPrice.php",
                data: query,
                dataType: "text",
                success: function(price){
                        // получаем цену и показываем ее пользователю
                        $("span#cost").html(price + "р.");
                        $("span#dist").html(distOrder + "км.");
                        $("span#time").html(time);
                        }  
                });
             }


Далее, в форме создано скрытое поле <input type="hidden" name="price" id="price" value=""/>
после того как стоимость получена аяксом, необходимо записать значение цены в это скрытое поле, для дальнейшей передачи методом POST в скрипт обработчик заказа.....
На данный момент: в массиве $_POST на входе скрипта, все значения есть, кроме скрытого поля с ценой поездки.

Подскажите как реализовать, буду очень благодарен за снятие 2-суточной головной боли

danik.js 23.02.2013 20:43

Цитата:

Сообщение от Antmike
Далее необходимо посчитать тариф

В этом и есть задача? Посчитать тариф? Ок, давайте попробую. Какое расстояние и время?

Antmike 23.02.2013 20:56

Цитата:

Сообщение от danik.js (Сообщение 236674)
В этом и есть задача? Посчитать тариф? Ок, давайте попробую. Какое расстояние и время?

Нет, тариф считается в скрипте аяксом - там проблем нет, все принимается и все правильно выдается.
Задача, подготовить форму к отправке и включить полученное аяксом значение цены в скрытое поле формы и что постом ушла корректно

danik.js 23.02.2013 21:38

$('#price').val(price);

Antmike 23.02.2013 21:45

Цитата:

Сообщение от danik.js (Сообщение 236691)
$('#price').val(price);

Да, есть такое.
Делаю поле видимым: действительно значение цены появляется в поле. Но такое ощущение что это значение плейсхолдера.
При отправке данных методом пост (в массиве 0), при просмотре кода страницы, так же value=""

---
Вот тут я и сел писать о помощи

danik.js 23.02.2013 22:07

Цитата:

Сообщение от Antmike
при просмотре кода страницы, так же value=""

Какой еще код страницы? Атрибут value хранит только начальное значение для свойства value. Дальнейшее изменение этого свойства не отражается на атрибуте. (google: dom attributes vs properties )

Цитата:

Сообщение от Antmike
При отправке данных методом пост (в массиве 0)

Нужно смотреть в инструментах разработчика в браузере на вкладке Network (Сеть) какие параметры отправляются.

Antmike 23.02.2013 22:21

Более наглядно
 
Вложений: 2
На скрине видна последовательность действий.
в поле вставлено значение, тем же методом
$("#orderPrice").attr("value",price);


Дальше, кнопка (3) - вызывает событие submit
...<form action="file.php" method="post">

в файле php

есть две строки:
header("Content-Type: text/html; charset=utf-8");
echo var_dump($_POST);


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

Iktash 24.02.2013 10:43

А когда поле видимое то же не отправляется? Может дело в том каким образом Вы его невидимым делаете?
У меня была как-то проблема, что вот так: visibility: hidden; работало,
а вот так: display:none нет.


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