如何使用PHP和Ajax将数组传递给Javascript?

2022-08-30 21:46:45

抱歉,如果这个解释不清楚,我也很难理解。如何使用 PHP 和 Ajax 将数组发送到 Javascript?我正在使用Ajax来获取一系列照片,然后我希望将其附加到页面上的空照片中。<div>

jQuery 如下所示:

$.ajax({
    url: "<?php echo site_url('demo/getPhotos/'); ?>",
    type: 'POST',
    data: form_data,
    success: function(data) {
        alert(data);
   }

PHP 函数 getPhotos 看起来像这样:

<?php

$photos = array();

foreach ($data as $photo) {
    array_push($photos,$photo['source']);
    }

// echo json_encode($photos); How should I be returning $photos?

如果我只是将数据发送到成功回调,但它似乎没有可用的格式。echo $photos;

如果我在PHP中做一个,结果看起来像这样:var_dump($photos)

array(4) {
  [0]=>
  string(14) "some_image.jpg"
  [1]=>
  string(14) "some_image.jpg"
  [2]=>
  string(14) "some_image.jpg"
  [3]=>
  string(14) "some_image.jpg"
}

我尝试过各种组合之类的,但实际上我是猜测,不确定它背后的理论。在这种情况下,将数据从PHP传递到Javascript的最佳方法是什么?json_encode


答案 1

尝试:

$.ajax({
    url: "<?php echo site_url('demo/getPhotos/'); ?>",
    type: 'POST',
    data: form_data,
    dataType:"json",
    success: function(data) {
        alert(data[0]);
   }

在PHP方面,您将需要打印:

print json_encode($photos);

为了更好地封装代码,您可以尝试的另一件事是,作为进一步JSON gooodness的示例,将是:

print json_encode(array("photolist"=>$photos,"photo_owner"=>"Me!"));

然后在服务器上,您将通过以下方式访问这些内容:

data.photolist[0]; //First photo
data.photo_owner;  //The owner of the photo set

答案 2

我在PHP中和请求结束时制作了一个数组。$result

 echo json_encode($result); 

在 JS 处理程序函数中:$.post

var obj = $.parseJSON(data);
var v = data.k; 

其中 是关联数组中的键值。k