簡體   English   中英

將數組輸入發布到PHP

[英]Post An Array input to PHP

我正在嘗試通過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();

我不知道數組將通過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

例如,如果表中具有以下格式,則無需修改要傳遞的值。

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

您可以使用它來循環數據並將信息轉換為可以輕松訪問的“可用格式”

我將嘗試通過一些示例進行說明,如果您還不夠,請告訴我。

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

當您將輸入字段的名稱設置為something[]時,當您通過$_POST['something']在PHP中收到輸入字段時,它將自動更改為數組。 在這里閱讀更多信息。

一個小例子:

<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 ();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM