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

Joe*_*e W 15 javascript php ajax jquery json

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

jQuery看起来如下:

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

PHP函数getPhotos看起来像这样:

<?php

$photos = array();

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

// echo json_encode($photos); How should I be returning $photos?
Run Code Online (Sandbox Code Playgroud)

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

如果我var_dump($photos)在PHP中执行,结果看起来像:

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"
}
Run Code Online (Sandbox Code Playgroud)

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

Ric*_*ard 24

尝试:

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

在PHP方面,你会想要打印:

print json_encode($photos);
Run Code Online (Sandbox Code Playgroud)

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

print json_encode(array("photolist"=>$photos,"photo_owner"=>"Me!"));
Run Code Online (Sandbox Code Playgroud)

然后在服务器上,您可以访问以下内容:

data.photolist[0]; //First photo
data.photo_owner;  //The owner of the photo set
Run Code Online (Sandbox Code Playgroud)


小智 11

我$result在PHP中和请求结束时创建了一个数组.

 echo json_encode($result); 
Run Code Online (Sandbox Code Playgroud)

并在JS $.post处理函数中:

var obj = $.parseJSON(data);
var v = data.k; 
Run Code Online (Sandbox Code Playgroud)

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