【问题标题】:How to get input values from a dynamically generated form如何从动态生成的表单中获取输入值
【发布时间】:2015-12-02 14:17:30
【问题描述】:

我对上一步的问题在这里Add a number of input fields based on a dynamic value in PHP

但是,要从这里继续,我有一个新问题,我不确定在此处搜索什么来找到答案,如果已经回答,请原谅。

我目前有一个数字 $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>

对于 ref,这里是生成选择框的 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>

      ';
    }

对于 ref,这是我用来从以前的表单中收集表单数据的 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 中的函数)。

如果我不知道有多少字段,如何从字段中获取值?

谢谢

【问题讨论】:

标签: php jquery ajax


【解决方案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);
});

这将发送表单中的所有数据

【讨论】:

  • 我将如何识别邮件功能中的所有数据。例如,我需要识别 HTML 电子邮件另一端的所有字段。
【解决方案2】:

使用 jQuery serialize 方法。

另外,您可以使用 jQuery post 方法(更简单):


如果您的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

【讨论】:

  • 我很好奇,我喜欢你的回答及其工作,但我如何在我的 PHP 中输​​出这些值。考虑到选择框的数量是根据用户选择的天数动态生成的。
  • 创建每个选择框后,您可以给它们一个递增的名称/编号组合,例如value1value2 等,它们将被添加到 $_POST 数组中。在 PHP 中使用var_dump($_POST) 来查看它们的布局。
  • 如果您不介意编辑您的答案以帮助我处理语法,我们将不胜感激。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-24
  • 1970-01-01
相关资源
最近更新 更多