繁体   English   中英

如何从ajax调用传递的php访问数组中的所有元素?

[英]How to access all elements in an array from php that is passed by an ajax call?

我发现很难从php文件访问数组中的元素。 该数组通过ajax调用传递。 请在下面的ajax调用中找到。

var data = ['test1', 'test2', 'test3'];
$(document).ready(function () {
    $("button").click(function () {
        $.ajax({
            type: "POST",
            url: "getResult.php",
            data: {
                testData: data
            },
            success: function (data, status) {
                alert("Data: " + data + "\nStatus: " + status);
            }
        });
        return false;
    });
});

服务器端的[PHP]代码是

$myArray = $_POST["testData"];
echo $myArray; 

但是$ myArray总是返回数组中的最后一个元素[此处为test3]。 如何首先访问[此处为test1]和其他元素? 请帮助。

JS:

JSON.stringify(data)

PHP:

$myArray = json_decode($_POST['data']);

您需要做的是将JavaScript数组转换为JSON,然后通过该JSON发送。 在PHP方面,您应该将JSON解码回数组。 最后,您应在将数组发回之前将其重新编码为JSON。

在您的客户端上更改一行:

data: {testData : JSON.stringify(data)},

在服务器端,请执行以下操作:

$myArray = json_decode($_POST["testData"]);
header('Content-Type: application/json');
echo json_encode(array('pheeds' => $pheeds, 'res' => $res));

对于简单的结构,您可以使用jQuery Param

data : $.param({testData:data})

有了这个,您应该可以使用

echo $_POST["testData"][0]...[2];

通过ajax传递JS var时,请尝试此操作。

使用Firebug在控制台上查看将什么放入PHP文件,这将为您省去很多麻烦。

您将看到该数组是一个OBJECT,因此您想将此数组作为JSON / STRING发送到PHP文件。

采用 :

 var data = ['test1','test2','test3'];
 data = JSON.stringfy(data);

在PHP上:

     $data = var_post('test_data');
     $data=json_decode($data);
     $print_r($data);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM