Опубликовать массив ввода в PHP - PullRequest
0 голосов
/ 30 мая 2018

Я пытаюсь опубликовать вход массива в PHP через Javascript, но когда я печатаю опубликованный массив, он ничего не показывает в контроллере. Я прилагаю свой код ниже

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 голосов
/ 30 мая 2018

Я попытаюсь объяснить с некоторыми примерами, пожалуйста, дайте мне знать, если вам этого недостаточно.

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

0 голосов
/ 30 мая 2018

Когда вы задаете имя поля ввода равным something[], оно будет автоматически заменено на массив при получении его в PHP через $_POST['something'].Прочитайте здесь для получения дополнительной информации.

Небольшой пример:

<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 ();
0 голосов
/ 30 мая 2018

Я не знаю, что происходит, когда массив будет проходить через 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
0 голосов
/ 30 мая 2018

Вам не нужно вносить изменения в передаваемые значения, если в таблице есть, например, следующая форма:

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

Вы можете использовать это для зацикливания данных и получения информации в «удобном для использования формате», к которому вы можете легко получить доступ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...