簡體   English   中英

PHP的AJAX返回變量

[英]AJAX return variable from PHP

當用戶單擊下載時,它將成功在服務器上創建包含文件的zip,然后它應從php警報zip位置(變量$ 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);
?>

返回類型是一個JavaScript對象,它將產生您所看到的內容。

首先,您應該console.log(data) ,以獲取結構。 您也可以通過查看Chrome中的“網絡”標簽來執行此操作。

知道data的結構后,就可以使用該值。

例如,然后alert(data.location)來警告實際值。

從ajax中刪除dataType ,它會警告[Object Object],因為如果您指定dataType: 'json',

和在PHP-

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

多虧@ jake2389,我才知道我在做什么錯,我基本上只需要在PHP中創建一個新變量,我將其想要發送回AJAX的數據稱為$ link,因為$ 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);
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM