1

I have to pass a Javascript arry to a PHP file while AJAX call.

Below is my js array:

var myArray = new Array("Saab","Volvo","BMW");

This JS code has to pass JS array to PHP file using AJAX request and will show count of array.

function ProcessAJAXRequest()
{
 $.ajax
 ({
 type: "POST",
 url: "myphpfile.php",
 data: {"id" : 1, "myJSArray" : myArray},
 success: function (data) 
 {
 alert(data);
 }
 });
}

This myphpfile.php file has to return the count of the array

<?php 
 $myPHPArray = $_POST["myJSArray"];
 echo count($myPHPArray);
 ?>

There is error in PHP file. I am getting undefined index: myPHPArray. How should acheive my required functionality?

asked Apr 1, 2014 at 11:27
3
  • Why not to calculate the count on client side ? Commented Apr 1, 2014 at 11:31
  • i dont see that var in your function scope. Commented Apr 1, 2014 at 11:33
  • your code is perfectly fine. I am getting count 3 without any change. I am not getting any error. using PHP 5.3 Commented Apr 1, 2014 at 11:45

4 Answers 4

2

Convert js array in json format by JSON.stringify

function ProcessAJAXRequest()
{
 $.ajax
 ({
 type: "POST",
 url: "myphpfile.php",
 data: {"id" : 1, "myJSArray" : JSON.stringify(myArray)},
 success: function (data) 
 {
 alert(data);
 }
 });
}

And In the PHP use json_decode function to get value in array

json_decode($_POST["myJSArray"]);
answered Apr 1, 2014 at 11:33
Sign up to request clarification or add additional context in comments.

Comments

2

Use JSON.stringify to converts a value to JSON and send it to server.

data: JSON.stringify({"id" : 1, "myJSArray" : myArray})
answered Apr 1, 2014 at 11:29

Comments

1

You could use JSON.stringify(array) to encode your array in JavaScript, and then use

$array=json_decode($_POST['jsondata']);

in your PHP script to retrieve it.please check this link

Pass Javascript Array -> PHP

answered Apr 1, 2014 at 11:35

Comments

0

What seems to me is that your array is not available in the function scope:

function ProcessAJAXRequest(){
 var myArray = new Array("Saab","Volvo","BMW"); // this has to be in fn scope
 $.ajax({
 type: "POST",
 url: "myphpfile.php",
 data: {"id" : 1, "myJSArray" : JSON.stringify(myArray)}, // do the stringify before posting
 success: function (data){
 alert(data);
 }
 });
}
answered Apr 1, 2014 at 11:37

Comments

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

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