【问题标题】:How to post an array using AJAX to PHP?如何使用 AJAX 将数组发布到 PHP?
【发布时间】:2013-07-27 17:24:51
【问题描述】:

我想使用 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 代码位于不同的文件中。

【问题讨论】:

  • 那么什么不完全正常。除了使用jQuery创建一个空数组之外,似乎没有什么问题?
  • 客户端 (javascript) 和服务器 (php) 之间的“路径”是 HTTP。 Http 不关心数组,只接受字符串。在您的 javascript 中,您应该将数组格式化为字符串(逗号分隔,JSON)并在服务器端解析它以获取数组。
  • @Joren - jQuery 会为你做到这一点。
  • @adeneo 这就是为什么我没有说是作为答案而是作为评论。
  • 我返回的数据显示“
    注意C:\xampp\htdocs\php\phparray.php 中的数组到字符串转换 b> 在 4
    Array" 行,我对此一无所知。

标签: php javascript ajax arrays


【解决方案1】:

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

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

【讨论】:

  • 如何在php文件中以数组的形式使用$n?任何建议,请!
  • 好吧,$n 应该已经是一个数组,因此您可以使用foreach 等轻松遍历它。试试var_dump($n),看看返回的是哪种数据类型(应该是数组)。
  • var_dump($n) 返回 "array(10) { [0]=> string(1) "0" [1]=> string(1) "1" [2]=> string (1) "2" [3]=> 字符串(1) "3" [4]=> 字符串(1) "4" [5]=> 字符串(1) "5" [6]=> 字符串(1 ) "6" [7]=> string(1) "7" [8]=> string(1) "8" [9]=> string(1) "9" } " 我想我可能会得到什么想要....谢谢。
【解决方案2】:

我使用$.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);

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      使用这个:

      $("#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-04-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多