【问题标题】:To pass input data as array to jquery将输入数据作为数组传递给 jquery
【发布时间】:2015-01-07 11:30:24
【问题描述】:

我要求学生使用 foreach 回答问题(哪些问题从数据库中检索),当所有答案填满后,我必须传递给 jquery,然后传递给控制器​​并保存到数据库。

<div>
    <tbody>
        <?php foreach ($questions as $question) { ?>
        <tr>
            <td ><?php echo $question['id']; ?></td>
            <td> <?php echo $question['question']; ?> </td>
            <td><input type='text' name='name' required="required" class="form-control" placeholder='Enter Your Answer'></td>
            // this is answer field associated with each question
        </tr>
        <?php } ?>  
    </tbody> 
</div>
<button class="btn btn-primary nextBtn btn-lg pull-right" id ="next" type="button" >Next</button>

当学生填写所有答案时(问题和答案)传递给 jquery 这是脚本

<script>
          $(document).ready(function($){
            $(".gg").click(function(){
            var array = $("input[name]").val();
            $.ajax({
          type: "POST",
          datatype:"json",
          url: BASE_URL+"student/info",
          data: 'data='+array,

          success: function(response) {


          }});

        return false;
    });  
});
        </script>    

当学生提交答案时,只有第一个答案传递给 jquery 函数,无法传递所有答案

【问题讨论】:

    标签: jquery sql ajax codeigniter formwizard


    【解决方案1】:

    数据格式不正确

    data: {'data=': array_variable },
    

    如果您想更好地发送所有表单数据,您可以将其序列化并将其发送到您的 php 端并在那里序列化。喜欢:

    data : $('#form').serialize()
    

    没有序列化的ELSE

    var textboxes = $('input[name="answer[]"]').val();
    data : {'data':textboxes},
    

    【讨论】:

    • 当我为 $("input[name]").val(); 做 console.log 时那个时候我只得到第一个答案
    • 将其包装在一个表单中并序列化您将获得所有元素的表单。还将 name="name" 更改为 name="answer[]"
    • 只需序列化表单并发送序列化数据。您可以将所有表单元素作为序列化数组
    • 是的,我也试过 .serialize() 但我仍然只得到一个帖子数据
    • var textboxes = $('input[name="answer[]"]').val(); data : {'data':textboxes},
    【解决方案2】:

    您需要动态给出输入文本框的名称

    在代码中

    <div>
          <form name='question' id='question' >
            <tbody>
                <?php foreach ($questions as $question) { ?>
                <tr>
                    <td ><?php echo $question['id']; ?></td>
                    <td> <?php echo $question['question']; ?> </td>
                    <td><input type='text' name='name[<?php echo $question["id"]; ?>]' required="required" class="form-control" placeholder='Enter Your Answer'></td>
                    // this is answer field associated with each question
                </tr>
                <?php } ?>  
            </tbody> 
          </form>
        </div>
        <button class="btn btn-primary nextBtn btn-lg pull-right" id ="next" type="button" >Next</button>
    

    在脚本中

    <script>
    $(document).ready(function($){
    $("#id").click(function(){
        $.ajax({
            type: "POST",
            url: BASE_URL+"student/info",
            data: $('#question').serialize(),
    
            success: function(response) {
    
    
            }});
    
            return false;
          });  
    });     
    </script>  
    

    【讨论】:

    • 是否必须使用 jquery 每个函数将数据作为数组推送?
    • 是的,你也可以使用jquery的每个函数。但这种方式更容易实现。
    • [&lt;?php echo $question["id"]; ?&gt;] 这是如何传递给脚本的,因为当我尝试无法将其传递给控制器​​时
    • 它是不是动态输入文本框..?
    • 这个输入文本框与每个问题相关联并且这个问题从数据库中检索
    猜你喜欢
    • 2011-02-22
    • 2016-03-24
    • 1970-01-01
    • 1970-01-01
    • 2019-11-13
    • 2019-06-29
    • 2021-07-16
    • 1970-01-01
    • 2013-01-27
    相关资源
    最近更新 更多