Intereting Posts
Не получать предупреждение о успехе в AJAX WordPress / Woocommerce: как получить определенную дочернюю категорию по «id» из идентификатора родительской категории Ошибка при вызове хранимой процедуры через php. Литерал не соответствует строке формата Как использовать GROUP_CONCAT с Zend Framework? Добавить новую ошибку пользователя в magento 1.5.0.1 PHP 5.4 после установки: preg_match (): Ошибка компиляции: неизвестный бит (ы) опций, установленный со смещением 0 Вызов функций PHP внутри строк HEREDOC API календаря Google v3 – не создание события (аутентификация от сервера к серверу) Как сделать PHP-неэтериализацию jQuery-сериализованной формы? Использование LIKE в bindParam для MySQL PDO Query CodeIgniter, как изменить буферизованный вывод перед отправкой Работа с CSV-файлом с нечетной инкапсуляцией // PHP Чтобы перенаправить пользователя обратно в index.php после обработчика динамически вставлять данные в таблицу mysql php array в url от json

Проблемы с Force_download CodeIgniter ()

Я пытаюсь сгенерировать файл .json для загрузки с помощью force_download () CodeIgniter в вызове Ajax, но он не работает должным образом.

Вот мой вызов Ajax:

$.ajax({ url: /myfunction, type: 'POST', data: {value_sent: my_json_array} }); 

И моя функция PHP:

 public myfunction() { $dl_array = $this->input->post("value_sent"); $this->load->helper('download'); force_download("file.json", $dl_array); } 

Данные отправляются (я дважды проверял), но подсказка загрузки никогда не отображается. Я предполагаю, что force_download () терпит неудачу, но я не понимаю, почему.

Любая помощь очень ценится, спасибо!

Это не проблема с CodeIgniter, это ограничение JavaScript. Вы не можете загружать файлы через AJAX, как указано в разделе Загрузка файла jQuery.Ajax .

вы не можете сделать это через Ajax, потому что JavaScript не может сохранять файлы непосредственно на компьютер пользователя (из соображений безопасности)

Просто протестировал его на реальном env.

Контроллер приветствия (по умолчанию)

 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Welcome extends CI_Controller { public function index() { $this->load->view('welcome_message'); } public function myfunction() { $dl_array = $this->input->post("value_sent"); $this->load->helper('download'); force_download("file.json", $dl_array); } } /* End of file welcome.php */ /* Location: ./application/controllers/welcome.php */ 

Приветственное сообщение

 <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Welcome to CodeIgniter</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> </head> <body> <script> $(document).ready(function () { $('#form').submit(); }); </script> <h1>Welcome</h1> <form id="form" action="/myfunction" method="post"> <input type="text" name="value_sent" value="text to download"/> </form> </body> </html>