【问题标题】:Post An Array input to PHP将数组输入发布到 PHP
【发布时间】:2018-11-09 04:19:54
【问题描述】:

我正在尝试通过 Javascript 将数组输入发布到 PHP,但是当我打印发布的数组时,它不会在控制器中显示任何内容 我在下面附上我的代码

submitHandler: function(form) {
    $('input[name="val_profession_id[]"]').val();
}

任何帮助都是可观的。

这是我需要通过 ajax 发布到控制器的数组选择框

<select class="select_box form-control" multiple="multiple" name="val_profession_id[]" id="val_profession_id"> 
</select> 

和ajax代码是:

val_profession_id = $('input[name="val_profession_id[]"]').val();

【问题讨论】:

  • 请在此处发布您的 ajax 代码
  • 你能提供一个可重现的例子吗?发送请求的 JavaScript 代码以及接收请求的 PHP。
  • 如果你不提供正确的代码,你怎么能期望一个正确的解决方案,你应该提供所有可能的代码进行调试。
  • 要传递数据,您需要发出 ajax 请求,如果您想传递数组,请参阅以下帖子:Pass array to ajax request in $.ajax()跨度>

标签: javascript php codeigniter


【解决方案1】:

我不知道当数组通过 HTML 传递给控制器​​函数时会发生什么,但至少我可以告诉你如何将数据从 HTML 传递给控制器​​函数

HTML 代码必须是这样的:-

<html>
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    </head>
    <body>
        <form>
            <select class="select_box form-control" multiple="multiple" name="val_profession_id[]" id="val_profession_id">
                <option value="1">1</option>
                <option value="2">2</option>
                <option value="3">3</option>
                <option value="4">4</option>
                <option value="5">5</option>
            </select>
            <input type="button" value="Submit" />
        </form>
        <script>
            $('input[type=button]').click(function(){
                $.ajax({
                    url: "1.php", // pass controller function Url here
                    type:'POST',
                    data: $('form').serializeArray(),
                    success:function(res){
                        console.log(res);// response come from server
                    }
                });
            });

        </script>
    </body>
</html>

在 PHP 方面:-

<?php

echo "<pre/>";print_r($_POST['val_profession_id']); 
// print value and then do further code what you want

【讨论】:

    【解决方案2】:

    我会尝试用一些例子来解释,如果这对你来说还不够,请告诉我。

    <!-- file.html -->
    <form>
        <select id="val_profession_id" multiple name="val_profession_id[]">
            <option selected value="2">2</option>
            <option selected value="3">3</option>
        </select>
    </form>
    

    在您的表单上方,因为它在您的 HTML 文件中。我使用了一些随机值,但在这里并不重要。

    <!-- file.js -->
    //Get an array, all the selected values
    var val = $('#val_profession_id').val();
    $.ajax({
        method: "POST",
        url:    "http://example.com/file.pp",
        data: {
            val_profession_id: val
        }
    }).then(function(res) {
        //You got the server's response
        console.log(res);
    });
    

    在发送 Ajax 请求的脚本之上。您可以随时单击按钮执行它。它只读取选定的值,然后将它们发布到 file.php

    <?php
    //file.php
    var_dump($_POST);
    

    上面应该显示如下内容:

    array(1) {
        ["val_profession_id"]=>
        array(2) {
        [0]=>
        string(1) "2"
        [1]=>
        string(1) "3"
      }
    }
    

    如您所见,PHP 将其作为数组获取。

    见jQuery.ajax

    【讨论】:

      【解决方案3】:

      如果您在表格中有以下表格,则不需要修改正在传递的值;

      <form action="myaction.php" method="POST">
          <table>
              <tr>
                  <th>First Name</th>
                  <th>Last Name</th>
              </tr>
              <tr>
                  <td><input name="firstname[]" /></td>
                  <td><input name="lastname[]" /></td>
              </tr>
              <tr>
                  <td><input name="firstname[]" /></td>
                  <td><input name="lastname[]" /></td>
              </tr>
              <tr>
                  <td><input name="firstname[]" /></td>
                  <td><input name="lastname[]" /></td>
              </tr>
          </table>
      </form>
      

      这些在输入名称中有[],当表单提交时,您可以执行以下操作;

      <?php
      
      for ($i = 0; $i < count($_POST['firstname']); $i++)
      {
          $firstname = $_POST['firstname'][$i];
          $lastname = $_POST['lastname'][$i];
          // Do something with this
      }
      

      您可以使用它来循环数据并将信息转换为您可以轻松访问的“可用格式”

      【讨论】:

      • OP 询问 jQuery 方式,而您告诉他 PHP 方式。你离正确的道路还很远。
      • OP 不需要 jQuery,这是不必要的开销
      • OP 明确说明:- This is my array select box which i need to post through ajax to controller
      • OP 想要使用 JavaScript 发布它的数据,我认为你应该添加一些 JavaScript 代码来发送 Ajax 请求。
      • AJAX 不在问题中,也许 OP 需要编辑,然后我们可以更好地帮助
      【解决方案4】:

      当您将输入字段的名称设置为something[] 时,当您通过$_POST['something'] 在 PHP 中接收它时,它将自动更改为数组。 阅读here了解更多信息。

      一个小例子:

      <form id="your_form">
          <input name="something[]" value=val_1>
          <input name="something[]" value=val_2>
      </form>
      

      在 PHP 中你会得到:

      print_r ($_POST['something']);
      

      会给你:

      //Array ([0] => 'val_1', [1] => 'val_2')
      

      您可以简单地通过 javascript 提交表单:

      document.getElementById('your_form').submit ();
      

      【讨论】:

        猜你喜欢
        • 2018-01-02
        • 1970-01-01
        • 1970-01-01
        • 2016-04-04
        • 1970-01-01
        • 1970-01-01
        • 2017-07-04
        • 1970-01-01
        • 2012-03-25
        相关资源
        最近更新 更多