2015-12-02 2 views
0

Мой вопрос к предыдущему шагу здесь Add a number of input fields based on a dynamic value in PHPКак получить входные значения из динамически генерируемой формы

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

В настоящее время у меня есть число $ date, которое рассчитывается из 2 полей даты. Пользователь выбирает дату и затем получает поле <select> на каждый день. Тем не менее, я хочу собрать значения из сделанных выборов и отправить их в мою форму через jQuery и ajax.

Шаг 1 (позволяет сказать, что пользователь выбрал 3 дня и 3 представлены <select> этого месторождения)

<select id="course_select_1"> 
    <option value="value 1">Value 1</option> 
    <option value="value 2">Value 2</option> 
</select> 

<select id="course_select_2"> 
    <option value="value 1">Value 1</option> 
    <option value="value 2">Value 2</option> 
</select> 

<select id="course_select_3"> 
    <option value="value 1">Value 1</option> 
    <option value="value 2">Value 2</option> 
</select> 

Для исх, вот PHP, который генерирует полей выбора.

for ($i = 1; $i <= $days; $i++) { 
     echo ' 
     <p>Day ' . $i . ' </p> 
     <select id="course-select' . $i . '"> 
      <option>Choose Course...</option> 
      <option value="No golf">No golf</option>       
     </select> 

     '; 
    } 

Для исх, это является JS, которые я использую, чтобы собрать свои данные формы из ТЕХ предыдущей формы и метод я привык использовать для сбора данных со стационарных полей.

 jQuery(document).ready(function(){ 

      jQuery('#step').click(function() { 

       jQuery('.step1').fadeOut(); 
       jQuery('.step2').fadeIn(); 

       var firstname = jQuery('#firstname').val(); 
       var surname  = jQuery('#surname').val(); 
       var telephone = jQuery('#telephone').val(); 
       var mobile  = jQuery('#mobile').val(); 
       var email  = jQuery('#email').val(); 
       var noofgolfers = jQuery('#noofgolfers').val(); 
       var arrival  = jQuery('#arrival').val(); 
       var leaving  = jQuery('#leaving').val(); 


       jQuery(function(){ 
        jQuery.ajax({ 
         url:"http://www.ayrshiregolf.com/wp-admin/admin-ajax.php", 
         type:'POST', 
         data:'action=bookingrequest&firstname=' + firstname + 
         '&surname=' + surname + 
         '&telephone=' + telephone + 
         '&mobile=' + mobile + 
         '&email=' + email + 
         '&noofgolfers=' + noofgolfers + 
         '&arrival=' + arrival + 
         '&leaving=' + leaving,      
         success:function(result){ 
         //got it back, now assign it to its fields. 
         jQuery('#step2content').html(result);     
         //console.log(result); 

         } 
        });  
       }); 
      }); 
     }); 

Шаг 2: Пользователь выбирает варианты, и мы затем отправить форму еще раз, используя тот же самый метод (JQuery, чтобы получить данные и отправить на мой функции в PHP).

Как получить значения из полей, если я не знаю, сколько их будет?

Благодаря

+4

вы можете просто [сериализовать] (https://api.jquery.com/serialize/) форму – Burki

+0

Возможный дубликат [Исходные значения из загруженной информации] (http://stackoverflow.com/questions/32072800/work-out-values-from-loaded-information) –

+0

Не могли бы вы попробовать с '$ ('form')' или '$ ('__ FORM_ID __')' 'serialize' метод? Например: 'var data = $ ('form'). Serialize();'. –

ответ

1

Используйте метод JQuery serialize.

Кроме того, вы можете использовать post метод JQuery (это проще):


Если ваш form имеет ID myForm:

jQuery('#step').click(function() { 

    jQuery('.step1').fadeOut(); 
    jQuery('.step2').fadeIn(); 

    jQuery.post("http://www.ayrshiregolf.com/wp-admin/admin-ajax.php", 
     jQuery("#myForm").serialize(), 
     function(result){ 
      jQuery('#step2content').html(result); 
     } 
    }); 
}); 

Для определения значения в PHP странице, вам нужно добавить атрибут name в форму поля:

<input type="text" name="myTextInput"> 

<?php 
    echo $_POST["myTextInput"]; //will output the value of the textarea named myTextInput 
+0

Мне любопытно, мне нравится ваш ответ и его работа, но как мне выводить значения в моем PHP. Учитывая тот факт, что количество блоков выбора динамически генерируется в зависимости от количества дней, которое выбирает пользователь. –

+0

При создании каждого окна выбора вы можете дать им увеличивающуюся по возрастанию комбинацию имени/номера, например. 'value1',' value2' и т. д., и они будут добавлены в массив '$ _POST'. Используйте 'var_dump ($ _ POST)' в PHP, чтобы посмотреть, как они выложены. – Ben

+0

Пойми, если вы не возражаете редактировать свой ответ, чтобы помочь мне с синаксией. –

1
jQuery.ajax({ 
    url:"http://www.ayrshiregolf.com/wp-admin/admin- ajax.php", 
    type:'POST', 
    data:$('form').serialize(),      
    success:function(result){ 
     //got it back, now assign it to its fields. 
     jQuery('#step2content').html(result);     
     //console.log(result); 
}); 

Это будет посылать все данные в форме

+0

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

+0

Я обратился к этому в [мой ответ] (http://stackoverflow.com/a/34045134/1241793). – Ben

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