Есть ли (умный) способ отправить массив (без изменений!) Через веб-форму? - PullRequest
0 голосов
/ 25 января 2019

В PHP у меня есть массив.Я хотел бы отправить все значения в массиве на следующую страницу (result.php).Когда я получу значения в $ _POST, могу ли я получить их в массиве, какими они были?(или я могу только получить значения массива отдельно или сцепленными, а затем заново сгенерировать массив?)

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

Пожалуйста, дайте мне знать, что будет лучшим способом в любом случае.Конечно, я предпочитаю сохранить исходный массив без изменений!

Спасибо!

<form class="form_container validationForm" action="result.php" method="post">
<input type="hidden" name="targetobject[]" value="
<?php $postvalue = array("Volvo", "BMW", "Toyota"););
foreach($postvalue as $value){echo $value;}
?>
">
<input type="text" class="form-control validationInput" name="search" placeholder="Type a search keyword"><br><button class="btn btn-primary" type="submit">Search</button></div></form>

//The following is result.php
<?php $targetobject = $_POST['targetobject'];
 echo var_dump($targetobject);
?>

array (3) {[0] => string (5) "Volvo" [1]=> string (3) "BMW" [2] => string (6) "Toyota"}

Ответы [ 3 ]

0 голосов
/ 25 января 2019

Или с меньшим количеством букв:

<?php $postvalue = array("Volvo", "BMW", "Toyota"); ?>

<form class="form_container validationForm" action="result.php" method="post">
<input type="hidden" name="targetobject" value='<?=json_encode( $postvalue ); ?>'>

<input type="text" class="form-control validationInput" name="search" placeholder="Type a search keyword"><br>
<button class="btn btn-primary" type="submit">Search</button>
</form>

//The following is result.php
<?php 
 $targetobject = json_decode( $_POST['targetobject'], $assoc = true );
 echo var_dump($targetobject);
?>
0 голосов
/ 25 января 2019

Что ж, если вы изучите HTTP-результат приведенных выше предложений, вы увидите, что они работают путем повторения имен переменных POST организованным способом.И этот подход, конечно, не ошибается.

Другой способ сделать это - отправить данные в кодировке JSON в виде значения одного поля.Этот подход позволяет действительно произвольно кодировать и представлять структуры данных.По сути, хотя и не совсем, «классический AJAX».

Итак, «выбор за вами».

0 голосов
/ 25 января 2019

Вам необходимо поместить каждое значение в отдельный скрытый input с именем, содержащим []. Попробуйте это:

 <form class="form_container validationForm" action="result.php" method="post">

 <?php $postvalue = ["Volvo", "BMW", "Toyota"]; ?>
 <?php foreach ($postvalue as $val) : ?>
     <input type="hidden" name="targetobject[]" value="<?php echo $value; ?>">
 <?php endforeach; ?>  

 </form>

 <input type="text" class="form-control validationInput" name="search" placeholder="Type a search keyword"><br><button class="btn btn-primary" type="submit">Search</button></div></form>

 //The following is result.php
 <?php $targetobject = $_POST['targetobject'];
  echo var_dump($targetobject);
 ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...