2013-12-19 3 views
1

У меня возникают проблемы с передачей переменной из моей функции JS в другой файл PHP при использовании кнопки отправки. У меня есть форма бронирования, она рассчитывает общую сумму с помощью JS, я хочу отправить эту сумму на другую страницу под названием «payment.php», я использую следующий код, но при переадресации к оплате ничего не обновляется в корзине. php Я хочу, чтобы это было сделано, когда пользователь выполнил выбор материала, затем он нажимает кнопку проверки, по которой это нужно отправить, но это не работает. Помощь требуетсяПроблемы с передачей переменной JavaScript в PHP

Вот код JS:

function payment(){ 
    var totalPrice = calTotal(); 
    document.getElementById("total").value= totalPrice; 
    window.location.href = "payment.php?total=" + totalPrice; 
} 

calTotal() другая функция, которая делает calulations, его прекрасно работает.

Вот код на моей принимающей PHP странице:

<?php 
$total = $_GET['total']; 
echo $total; 
?> 

Я на самом деле пытается сделать школьную форму, есть только одна форма, и он находится на странице PHP, пользователь выбирает checkbboxes, для это я использовал JS, так как пользователь проверяет, что он суммируется с использованием calTotal() на стороне клиента и отображает его с использованием функции .innerHTML. Я хочу, чтобы это произошло, я хочу, чтобы эта переменная была отправлена ​​на другую страницу php, скажем, payment.php. Я хочу, чтобы эта переменная отображалась так же, как и на моей платежной странице, но не получая эту переменную, я пробовал некоторые методы, которые я знал, а также пробовал предложения, данные @cocco, но все напрасно. Нужна помощь.

+0

'calTable() отлично работает' ... так что вы можете' console.log (totalPrice) 'перед тем, как перенаправить (вернуть false после console.log, чтобы остановить это), и ваша консоль показывает правильное значение? –

+0

Я не вижу ничего плохого в вашем коде. Можете ли вы разместить HTML? –

+1

Это не отвечает на конкретный вопрос, но: вы рассчитываете цену в браузере, а не на сервере? Это кажется немного сомнительным, безопасным, хотя я не могу сказать точно, не видя ничего. Предположительно, у вас будут другие параметры, чтобы сказать, что заказывается. Таким образом, злоумышленник может отправить запрос «Пожалуйста, пришлите мне 1000 предметов и зарядите мою учетную запись $ 0.50» –

ответ

0

Если payment является обработчиком событий для отправки формы, то вам, вероятно, необходимо будет позвонить preventDefault() на свой объект «Событие», чтобы браузер не отправил форму и в основном переопределял вашу переадресацию. Кроме того, у вас может быть скрытое поле в форме, которая отправляет рассчитанное итоговое значение, и установите это на submit, и оно будет опубликовано вместе с тем, что еще находится в форме.

Для справки, однако, любой из них является довольно уродливым с точки зрения прогрессивного улучшения. Вы в основном , требующий, что люди имеют JS, чтобы материал не выглядел сломанным. Этот материал более корректно обрабатывается на стороне сервера. (В частности, если вы используете это значение для чего важно Вы в основном позволить клиенту решить, сколько ваши расходы вещи не доверяют, делать свои собственные расчеты на сервере!..)

1

Рабочий код:

JS

YOURPAYMENTFORM.onsubmit=function(e){ 
this.total.value=calTotal(); 
this.submit(); 
return false 
} 
// if you have only one form you can access it by document.forms[0] 
// and so have document.forms[0].onsubmit=function(e){.. 

PHP

<?php 
echo $_POST['total']; 
?> 

Что не так:

Вы пытаетесь post (onsubmit) на страницу и в то же время вы пытаетесь достичь другой страницы с get (window.location).

Почему?

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

, даже если вы остановите это (верните false), пользователь может нажать кнопку ввода, и он сделает то же самое.

вот почему я добавил функцию (платеж) непосредственно элементу формы.


------------------------ Задача 1

если document.getElementById("total").value= totalPrice; находится внутри вашей формы и оплаты страницы payment.php вы можете просто позвонить $_POST['total'] внутри принимающей PHP

<?php 
$total = $_POST['total']; 
echo $total; 
?> 

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

------------------------ Задача 2

Добавляя onsubmit Вашей платежной формы элемента вы имеете полный контроль над ним

с e.preventDefault() или return false вы можете остановить его отправку информации и перейти на страницу "payment.php?total=" + totalPrice;.

YOURPAYMENTFORM.onsubmit=function(e){ 
e.preventDefault(); 
var totalPrice = calTotal(); 
document.getElementById("total").value= totalPrice; 
window.location.href = "payment.php?total=" + totalPrice; 
return false 
} 

, но в этом случае вы не посылать почтовые переменные.

+0

Это не то, что он пытается сделать. Он не публикует форму – Onimusha

+0

. Я просто объясняю, что ошибки находятся внутри его кода. ... после того, как «СО, чтобы собрать все вместе» – cocco

+0

onsubmit - это отличный способ опубликовать форму, как она выполняется, если вы нажмете ввод внутри формы или если вы нажмете назначенную кнопку отправки. – cocco

Смежные вопросы