50

I need to store some input in a hidden field, so when I print the post-request, I get:

Array ( [0]=>1 [1]=>2 [2]=>3 )

I already tried:

var elems = [];
elems.push['1'];
elems.push['2'];
elems.push['3'];

$('#input_hidden_field').val(elems);

But it does not work, anybody could help me with this?

2
  • Follow this stackoverflow.com/questions/10939840/… Commented Mar 16, 2015 at 12:00
  • You can only assign a string value to the val of an input field. What do you want to go in the field? Do you want the value formatted? "1,2,3"? Commented Mar 16, 2015 at 12:02

4 Answers 4

105

You can parse your array into a JSON-string to store it:

.push() is a function, therefore it needs () and not the [] array-syntax.

var elems = [];
elems.push('1');
elems.push('2');
elems.push('3');

$('#input_hidden_field').val(JSON.stringify(elems)); //store array

var value = $('#input_hidden_field').val(); //retrieve array
value = JSON.parse(value);

To create an object just change the definition of elems and the storage of the values:

var elems = {};
elems[0] = '1';
elems[1] = '2';
elems[2] = '3';

Demo

Reference

.stringify()

.parse()

Sign up to request clarification or add additional context in comments.

3 Comments

i need to create an object and than stringify it, could u help me with this?
Can we pass this json string to controller and retrieve our array back in controller ? if yes please help how to do that
@ZaidQureshi Yes, but this has nothing to do with the OP. So please feel free to submit a new question (or research on SO first, keyword AJAX)
9

JS

var elems = [];
elems.push['1'];
elems.push['2'];
elems.push['3'];
$('#input_hidden_field').val(JSON.stringify(elems));

PHP

$elems = json_decode($_POST['hidden_input_name'], true);

Comments

5

A better approach would be appending a new formdata for each value within an array.

JS

var elems = [];
elems.push['1'];
elems.push['2'];
elems.push['3']; 

var fd = new FormData(document.getElementById("myform"));
for (var i = 0; i < elems.length; i++) {
   fd.append('elems[]', elems[i]);
}

HTML

<form action="./post-request.php" method="post" id="myform">
   <input type="hidden" name="elems[]" />
   <button type="submit" name="myarray">SEND</button>
</form>

PHP

<?php 

   if(isset($_POST['myarray']) {
      print_r($_POST['elems']); 
   }

1 Comment

it depends on your needs, if this is "better"
0

For a simple array of strings, just use the html name tag accordingly:

<input name="input_hidden_field[]"/>

This will just join the values in the input and give you back an array upon retrieval

$('name="input_hidden_field[]"']).val()

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.