【问题标题】:How to capture submitted POST name如何捕获提交的 POST 名称
【发布时间】:2020-12-11 17:35:57
【问题描述】:

我有以下几点:

<form class="" id="quiz_form" action="" method="post">
    <input type="text" name="<?php echo $question_id; ?>[]" value="answer">
    <input type="text" name="<?php echo $question_id; ?>[]" value="answer">
    <input type="button" onclick="submitQuiz()">
</form>

这些输入在foreach 内,因此name 属性的值总是不同的。

POST 发送如下:

function submitQuiz() {
    $.ajax({
        url: '<?php echo site_url('home/submit_avaliacao'); ?>',
        type: 'post',
        data: $('form#quiz_form').serialize(),
        success: function(response) {
            $('#quiz-body').hide();
            $('#quiz-result').html(response);
        }
    });
}

我尝试这样处理数据:

foreach ($this->input->post(NULL, TRUE) as $row){
            foreach ($row as $key=>$value){
                $data_answer['question_id'] = $key;
                $data_answer['answer'] = $value;
                $this->crud_model->av_insert_answer($data_answer);
            }
        }

问题是$key 的值对于所有输入总是0,而对于$value 这没关系。

我相信这是由于输入的name 中的 [ ] 所致,但如果我删除它们,则不会发送数据。如何解决?

我用这种方式做了一个测试,它也没有工作:

 foreach ($_POST as $row){
            foreach ($row as $key=>$value){
                $param_name = 'mqc';
                if(substr($key, 0, strlen($param_name)) == $param_name) {
                    $data_answer['question_id'] = $key;
                    $data_answer['answer'] = $value;
                }
            }
        }

在这种情况下,我在输入名称中添加了文本 "mqc",但无济于事。

print_r($this-&gt;input-&gt;post(NULL, TRUE)) 的输出:

Array
(
    [8] => Array
        (
            [0] => answer input 1
        )

    [7] => Array
        (
            [0] => answer input 2
        )

    [9] => Array
        (
            [0] => answer input 3
        )

)
Array
(
    [8] => Array
        (
            [0] => answer input 1
        )

    [7] => Array
        (
            [0] => answer input 2
        )

    [9] => Array
        (
            [0] => answer input 3
        )

)
Array
(
    [8] => Array
        (
            [0] => answer input 1
        )

    [7] => Array
        (
            [0] => answer input 2
        )

    [9] => Array
        (
            [0] => answer input 3
        )

)

【问题讨论】:

    标签: php jquery ajax codeigniter


    【解决方案1】:
    foreach ($_POST as $row){ //first
       var_dump($row);
       foreach ($row as $key=>$value){
          //...
       }
    }
    
    <form action="test1.php" method="post">
    <input type="text" name="34[]">
    <input type="text" name="35[]">
    <input type="submit">
    </form>
    

    我检查了变量 $row 包含的内容:

    array(1) { [0]=> string(2) "ww" } array(1) { [0]=> string(2) "ss" }
    

    它清楚地看到变量 $key 总是包含值零。

    在第一个 foreach 中添加一个键,你就可以得到你的 id:

    foreach ($_POST as $keyRow => $row){
    

    【讨论】:

      猜你喜欢
      • 2019-06-18
      • 1970-01-01
      • 2021-03-17
      • 2012-03-06
      • 2014-10-31
      • 2020-03-11
      • 1970-01-01
      • 2012-10-02
      • 2014-11-30
      相关资源
      最近更新 更多