AJAX从PHP返回变量

时间:2017-02-20 03:38:21

标签: javascript php jquery ajax

当用户点击下载时,它将成功在服务器上创建带有文件的zip,然后它应该从php中作为响应警告拉链位置(变量$ zip),而是警告[object Object]。其他一切都在发挥作用。我做错了什么?

JQuery的:

$('.download').click(function() { 
window.keys = [];
$('.pad').each(function(i, obj) {
    var key = $(this).attr('key');
        keys.push(key)
});
var jsonString = JSON.stringify(keys);
$.ajax({
      type:'post',
    url:'download.php',
    data: {data : jsonString}, 
        cache: false,
   dataType: 'json',
    success: function(data){

       alert(data);

      }
 });
});

PHP:

<?php


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

$numbercode = md5(microtime());
$zip = new ZipArchive();
$zip->open('kits/'.$numbercode.'.zip', ZipArchive::CREATE);

foreach($data as $d) {

$zip->addFile($d);  

}

$zip->close();



echo json_encode($zip);
?>

3 个答案:

答案 0 :(得分:2)

返回类型是一个JavaScript对象,它将导致您看到的内容。

首先,你应该console.log(data)来获得结构。您也可以通过查看Chrome中的“网络”标签来执行此操作。

在您知道data的结构后,您可以使用该值。

例如,然后alert(data.location),提醒实际值。

答案 1 :(得分:1)

从ajax中删除dataType,它会警告[Object Object],因为如果指定dataType: 'json',,结果将成为json对象,

并在php -

// to echo the location of the zipfile
echo 'kits/'.$numbercode.'.zip';

答案 2 :(得分:0)

感谢@ jake2389我看到我做错了什么,我基本上只需要在PHP中创建一个新变量,我称之为$ link,我希望将数据发送回AJAX,因为$ zip被定义为zip存档不是一个字符串。这是我改变了,现在它正在发挥作用。

<强> PHP:

<?php


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

$numbercode = md5(microtime());
$zip = new ZipArchive();
$zip->open('kits/'.$numbercode.'.zip', ZipArchive::CREATE);

foreach($data as $d) {

$zip->addFile($d);  

}

$zip->close();

$link = 'kits/'.$numbercode.'.zip';

echo json_encode($link);
?>