将数组输入发布到PHP

时间:2018-05-30 10:35:51

标签: javascript php codeigniter

我试图通过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();

4 个答案:

答案 0 :(得分:3)

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

HTML代码必须是这样的: -

content-type

在PHP方面: -

<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>

答案 1 :(得分:1)

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

<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
}

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

答案 2 :(得分:1)

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

<!-- 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 :(得分:0)

当您将输入字段的名称设置为func locationManager(_ manager: CLLocationManager, didUpdateHeading newHeading: CLHeading) { // heading is updated for delegates only after any transition has ended // therefore, snapshot properties are set already by the time program reaches this function mapView.camera.heading = newHeading.magneticHeading mapView.setCamera(mapView.camera, animated: true) } 时,当您通过something[]在PHP中收到它时,它将自动更改为数组。 请阅读here以获取更多信息。

一个小例子:

$_POST['something']
在PHP中

然后你得到:

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

会给你:

print_r ($_POST['something']);

您只需通过javascript提交表单:

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