如何使用AJAX将Javascript数组传递给PHP文件?

时间:2014-04-01 11:27:57

标签: javascript php jquery ajax

我必须在AJAX调用时将Javascript arry传递给PHP文件。

下面是我的js数组:

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

这个JS代码必须使用AJAX请求将JS数组传递给PHP文件,并显示数组的计数。

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

这个myphpfile.php文件必须返回数组的计数

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

PHP文件中存在错误。我得到未定义的索引:myPHPArray。应该如何实现我所需要的功能?

4 个答案:

答案 0 :(得分:2)

使用JSON.stringify将值转换为JSON并将其发送到服务器。

data: JSON.stringify({"id" : 1, "myJSArray" : myArray})

答案 1 :(得分:2)

通过JSON.stringify

以json格式转换js数组
function ProcessAJAXRequest()
{
    $.ajax
    ({
        type: "POST",
        url: "myphpfile.php",
        data: {"id" : 1, "myJSArray" : JSON.stringify(myArray)},
        success: function (data) 
        {
            alert(data);
        }
    });
}

并在PHP使用json_decode函数中获取数组中的值

json_decode($_POST["myJSArray"]);

答案 2 :(得分:1)

您可以使用JSON.stringify(array)在JavaScript中对数组进行编码,然后使用

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

在您的PHP脚本中检索它。请检查此链接

Pass Javascript Array -> PHP

答案 3 :(得分:0)

在我看来,您的数组在功能范围内不可用:

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);
      }
   });
}