Ajax передача данных из формы

111
20 августа 2019, 13:30

Есть такая форма с javascriptoм

<script> 
$(document).ready(function(){ 
      $('.calc select').change(function(){ 
        $country = $('select#choose-country').val(); 
    if ($country == 'austria') { 
          $koef = 1; 
        } 
    if ($country == 'great-britain') { 
          $koef = 2; 
        } 
     if ($country == 'nederland') { 
          $koef = 3; 
        } 
        $totalprice = $koef * 100; 
    $('#price').text($totalprice); 
         })         
 </script> 
  
 
 <section id="main"> 
    <form method="post" id="ajax_form" action="" > 
     
    <select class="form-control" name="country" id="choose-country"> 
   						<option value="austria">Австрия</option> 
   						<option value="great-britain">Великобритания</option> 
   						<option value="nederland">Голландия</option> 
    </select> 
     
    <div class="price-final"> 
   			<h5>Цена зависит от страны</h5> 
   			<span name="price" id="price">0</span>EUR</div> 
<button id="calc-price" type="button" class="btn-warning">Посчитать</button> 
<button id="send-price-to-us" type="submit" class="btn-success">Выслать нам заявку</button> 
         
    </form> 
   </section> 
    
    
   

После этого я посылаю данные с помощью Ajax вот так

<script src="https://какой-то.сайт/calc-price/email.js"></script>
Скрипт выглядит вот так

$(document).ready(function() { 
 
  $("#ajax_form").submit(function() { 
    $.ajax({ 
      type: "POST", 
      url: "/calc-price/e-mail-form/send-form1.php", 
      data: $(this).serialize() 
    }).done(function() { 
      $(this).find("input, span").val(""); 
      alert("Спасибо за заявку! Скоро мы с вами свяжемся."); 
      $("#ajax_form").trigger("reset"); 
    }); 
    return false; 
  }); 
   
});

Дальше код класса по отправке имейла выглядит вот так

<?php 
 
$recepient = "myemail@gmail.com"; 
$sitename = "mypage"; 
 
$country = trim($_POST["country"]); 
$price = trim($_POST["totalprice"]); 
$key_to_txt = array('austria' => 'Австрия');

Теперь вопрос: Проблемма в том что мне не приходит переменная $price, тоесть она считается в форме но мне не приходит. И Названия стран приходят тоже только на латыни. Как мне решить проблемму с переводом и с вытягиванием результата с формы?

Answer 1

Элемент с name="price" должен быть элементом формы, например input. Если требуется чтобы него нельзя было редактировать тогда использовать readonly. Также можно его свертать так что это будет как обычный текст. Ну или на худой конец держать span и hidden input.

Answer 2

Спасибо за советы. Добавил возле значения скрытый input

<input name="emailprice" id='price' class='hidden' value=''>

Передал в value переменную дописав строку кода

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

И дописал в php строку кода

$price = trim($_POST["emailprice"])

Все работает. Спасибо за советы.

READ ALSO
Загрузка нескольких файлов

Загрузка нескольких файлов

Форма загрузки файлов:

101
Преобразовать многомерный массив

Преобразовать многомерный массив

Пытаюсь получить на PHP(Bitrix) многомерный массив:

128
Не применяется шаблон записи в Wordpress

Не применяется шаблон записи в Wordpress

Такая проблема - у меня есть шаблон записи на сайте ВП, когда я создаю новую запись и в свойствах записи применяю этот шаблон, после этого сохраняю...

119
Undefined reference to *функции из dll*

Undefined reference to *функции из dll*

Я получил несколькоdll файлов с простым фреймворком

165