@Blast угу, то есть, я генерирую ссылку для скачивания и записываю всю строку в url? Сделал почти так же как в Вашем примере, но выполняется .error хотя код ответа 200, разумеется подумал на ошибки PHP, но в журнале ошибок нет, error_get_last() тоже возвращает пустоту. Странное дело.
Контроллер:
public function getTplFile(){
if (isset($this->request->post['tpl_name'])) {
$this->load->model('user/users_perm_plus');
// $data = $this->model_user_users_perm_plus->getTplPermData($this->request->post['tpl_name']); // (array) $data
// $data['tpl_name'] = $this->request->post['tpl_name'];
$data = 'test';
$file_name = 'upp_tpl_' . $this->request->post['tpl_name'] . '.json';
$file_data = 'data:text/plain;base64,' . base64_encode($data);
$json['file_name'] = $file_name;
$json['file_data'] = $file_data;
$this->response->addHeader('Content-Type: text/plain');
$this->response->addHeader('Content-Disposition: attachment; filename="' . $file_name . '"');
$this->response->setOutput(json_encode($json));
// $error = error_get_last();
// $this->response->setOutput($error);
}
}
AJAX:
function getTplFile(tpl_name) {
$.ajax({
url: '<?php echo $link_to_getTplFile; ?>&token=<?php echo $token; ?>',
method: 'POST',
dataType: 'text/plain',
data: {
tpl_name: tpl_name
},
beforeSend: function () {
$('.panel-title').html('<i class="fa-green fa fa-spinner fa-pulse fa-3x fa-fw"></i><?php echo $text_loading; ?>');
},
complete: function () {
$('.panel-title').html('<i class="fa fa-table"></i>');
},
success: function(json) {
console.log(json);
$('#tpl-file-link').attr('href', json['file_data']).attr('download', json['file_name']);
document.getElementById("tpl-file-link").click();
},
error: function (error) {
console.log(error);
}
});
}
Ответ сервера: