如何使用PHP&;Ajax到Javascript


How to pass an array using PHP & Ajax to Javascript?

很抱歉,如果这个解释不清楚,我也很难理解如何使用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"
}

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

尝试:

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

为了更好地封装代码,您可能会尝试的另一件事是:

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

然后在服务器上,你可以用访问这些

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

我在PHP中创建了一个数组$result,并在请求的末尾。

 echo json_encode($result); 

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

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

其中CCD_ 7是关联数组中的键值。

json_encode绝对是一条不错的路。jQuery甚至内置了对解析JSON的支持。你可以使用例如

$.ajax({
    url: "<?php echo site_url('demo/getPhotos/'); ?>",
    type: 'POST',
    data: form_data,
    dataType: 'json', // will automatically convert array to JavaScript
    success: function(array) {
        alert(array[0]); // alerts first string
    }
});

返回json本身,然后通过在json上循环来在js中构造数组,如下所示:

var array=[];
for(var key in json)
{    
    if(json.hasOwnProperty(key))
      array.push(json[key]);
}

或者,您可以简单地处理json本身——需要数组的原因是什么?

类似json[0]或json[1]等。

json_encode rulez。

我最近也学了这个很酷的东西!以下是您的操作方法:

function jsonResponse($array) {
     header('Content-type: application/json; charset=utf-8;');
     die(json_encode($array));
}

这是可选的,如果你想这样做,你不必这样做,但在我的MVC系统中,我倾向于这样写。。。因此,首先我向一个脚本发出ajax请求(原型(,该脚本稍后调用我前面提到的函数jsonResponse。。。

    new Ajax.Request('URL',
{
    method:'post',
    onSuccess: function(transport){
        res = transport.responseJSON;
        $('actionInformation').update(res.username);
    },
    onFailure: function(){
        alert('Something went wrong...')
    }
});

这是jscript代码,注意res.msg,这是我们可以使用数组进行操作的地方。但是,请确保在您的PHP中使用jsonResponse函数以JSON格式发送响应,这很容易使用,例如,您的PHP函数可以看起来像这样:

function ajax_get_user() {
     $userName = 'Adrian';
     $active = 1;
     jsonResponse(array('username' => $username, 'active' = $active));
}

稍后您可以轻松使用res.username、res.active。

我认为这应该做到!