1

我想使用 AJAX 将数组发布到 PHP,并在成功时将值返回给 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 代码位于不同的文件中。

4

4 回答 4

5

问题出在您的 PHP 中 - 您在数组上使用 echo。而是使用var_dump

<?php
    $n=$_POST['array1'];
    var_dump($n);
?>
于 2013-07-27T13:41:33.023 回答
3

我想出了使用$.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);
于 2013-07-27T14:09:58.083 回答
0

用这个:

$("#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;
    });
于 2013-07-27T14:00:16.463 回答
0

http://api.jquery.com/serializeArray/为您执行此操作,因为您已经在使用 jquery ..

于 2013-07-27T13:38:45.123 回答