Я заранее извиняюсь за сложную формулировку вопроса, но я не мог понять, как это сделать.
У меня по существу есть строка в базе данных, которую я намерен сделать доступной для загрузки пользователя. Как мне это сделать?
Я пытался использовать ajax, но я не был уверен, как это сделать.
Следующий код jquery выполняется при нажатии ссылки загрузки
$.ajax({ url: 'index.php/script/downloadFile', type: 'post', data: {name: $(this).text()} });
Соответствующий PHP-код выглядит так:
public function downloadScript(){ $name = $_POST['name']; $filename = $name . ".txt"; $string = //String that comes from database using name to create query $filename = $name . ".txt"; header('Content-type: text/plain'); header('Content-Disposition: attachment; filename="' . $filename . '"'); header("Content-Length: " . strlen($string)); header("Connection: close"); echo $string; }
По сути, я хочу, чтобы строка была там для загрузки пользователем в виде текстового файла. Я не знал, был ли AJAX правильным способом для этого или был лучший способ выполнить ту же задачу. (Я предполагал, что лучшим способом было бы включить скрытый iframe)
Для получения дополнительной информации у меня есть список элементов:
Когда вы нажимаете, я хочу отправить текст имени этого элемента в файл php, чтобы сформировать запрос.
Вот почему у меня нет простой настройки href, чтобы начать загрузку файла.
РЕДАКТИРОВАТЬ:
В то время как я нахожусь в этом, мне все равно нужно получить более одного из этих файлов, скажем, что есть несколько строк, которые возвращаются из базы данных, сохраняют их в виде отдельных текстовых файлов, застегивают их и отправляют их пользователю ? Или это потребует сохранения на сервере?
Любая помощь приветствуется!
Вы могли бы просто сделать ссылку
<ul> <li class="click_link">John</li> <li class="click_link">Bob</li> </ul> <script> $('li').click(function(e) { window.location.href = 'getfile.php?name=' + $(this).text(); }); </script>
Затем измените значение $_POST
на $_GET
.
Это загрузит файл, если ваши заголовки установлены правильно.