Как разместить массив с использованием AJAX для PHP?

Я хочу опубликовать массив на PHP с помощью AJAX, и при успешном возвращении значение возвращается к JavaScript. Вот мой код.

JavaScript:

$(document).ready(function(){ $.ajax({ type: "POST", url: "phparray.php", data: { array1: phparray }, success: function(data){ alert("success"); alert(data); } }); }); 

HTML:

 <html> <head> <script type="text/javascript" src="jquery-2.0.2.js"></script> <script> var phparray = jQuery.makeArray(); for(var i=0; i<10 ; i++){ phparray.push(i); } </script> <script type="text/javascript" src="phparraypost.js"></script> </head> <body> </body> </html> 

PHP:

 <?php $n=$_POST['array1']; echo $n; ?> 

Данные, которые я возвращаю, говорят

 <br /> <b>Notice</b>: Array to string conversion in <b>C:\xampp\htdocs\php\phparray.php</b> on line <b>4</b><br /> Array 

и у меня нет идеи, что может быть не так.

Код HTML, PHP и JavaScript находятся в разных файлах.

Проблема в вашем PHP – вы используете эхо в массиве. Вместо этого используйте var_dump .

 <?php $n=$_POST['array1']; var_dump($n); ?> 

Я придумал решение, используя $.param . Эта функция используется внутри для преобразования значений элементов формы в сериализованное строковое представление. Я не уверен, выполняет ли оно ваше требование.

  <script> $(document).ready(function(){ var phparray = new Object(); for(var i=0; i<10 ; i++){ phparray['val' + i] = i; //store value in object } $.ajax({ type: "POST", url: "phparray.php", data: { array1: $.param(phparray) //serialize data }, success: function(data){ alert("success"); alert(data); } }); }); </script> 

PHP

  $pieces = explode('&', $_POST['array1']); //explode passed serialized object $phparray = array(); foreach($pieces as $piece){ list($key, $value) = explode('=', $piece); $phparray[$key] = $value; //make php array } var_dump($phparray); 

http://api.jquery.com/serializeArray/ делает это за вас, так как ваш уже использующий jquery ..

использовать это:

 $("#formId").submit(function(event) { event.preventDefault(); var url = $(this).attr('action'); $.ajax({ url : url, data : $(this).serialize(), cache : false, contentType : false, processData : false, type : 'POST', success : function(data) { $('#result').html('<div class="notes">Done</div>'); } }); return false; });