JavaScript — возвращаемая переменная AJAX из переполнения стека

Когда пользователь нажимает кнопку «Загрузить», он успешно создает zip-файл на сервере с файлами, затем он должен предупредить местоположение zip-файлов (переменная $ zip) из php в качестве ответа, но вместо этого он отправляет предупреждение [объект 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);
?>

2

Решение

Возвращаемый тип — это объект JavaScript, результатом которого будет то, что вы видите.

Во-первых, вы должны console.log(data), чтобы получить структуру. Вы также можете сделать это, посмотрев вкладку «Сеть» в Chrome.

После того, как вы знаете структуру dataВы можете использовать значение.

Например, тогда alert(data.location), чтобы предупредить фактическое значение.

2

Другие решения

удалить свой dataType из ajax, он предупреждает [Object Object], потому что ваш результат становится объектом json, если вы укажете dataType: 'json',,

и в php-

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

Благодаря @ 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);
?>
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector