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

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 に答える