У меня есть файл php, «php-1», который создает страницу html.

Он запрашивает у пользователя ввод данных. Пользователь нажимает кнопку "getIDs" (кстати, есть несколько кнопок с таким же именем)

Эти входные данные принимаются в вызове js / Ajax, передавая входной параметр в «php-2». (Переданный параметр фактически назначается кнопке, по которой была нажата кнопка)

php-1

<script type="text/javascript">

jQuery(document).ready(function(){ 

  jQuery(document).find('button#getIDs').click(function(button){
    var parm1 = jQuery(this).attr('source_id');
    $.ajax({
      type: "POST",     
      url: "process-test.php?source_id="+parm1,
      cache: false,
      success: function(n) {    
        alert("complete");      
        } 
    }); 
 });
});
</script>

«php-2» принимает параметр POST (я полагаю, что это действительно GET) и выполняет вызов API на внешний веб-сайт, который возвращает 2 массива. бывший. [111, 222, 333, 444, 555] и [aaa, bbb, ccc]

(Я знаю, что массивы строятся, так как я сохранил содержимое массива в файл сервера)

Массивы возвращаются обратно в код Ajax.

Php-2:

echo $results123;
echo $resultsABC;

Я хотел бы, чтобы этот массив был сохранен в 2 отдельных файлах на пользовательской машине, предлагая пользователю указать каталог и имя файла .txt, каждая строка содержит один элемент массива:

Файл 1

111
222
333
...

Файл 2:

aaa
bbb
ccc

Как мне этого добиться?

Заранее спасибо!

Кстати, спасибо всем членам SO. Вы уже сэкономили мне дни усилий. Надеюсь, что смогу внести свой вклад в сообщество.

Привет, Саймон.

0
limeygent 14 Дек 2013 в 02:21
Взгляните на это и посмотрите, работает ли он: stackoverflow.com/questions/40943/…
 – 
brandonscript
14 Дек 2013 в 02:26

1 ответ

Лучший ответ

Вы можете записать в него файл и закодировать массивы в JSON, например

  $location="path/to/file.txt";
  $file = fopen($location,"w");
  $content = JSON_encode($results123).JSON_encode($resultsABC);
  fwrite($file,$content);
  fclose($file);

Затем, чтобы скачать файл

header("Content-Disposition: attachment; filename=\"" . basename($file) . "\"");
header("Content-Type: application/force-download");
header("Content-Length: " . filesize($file));
header("Connection: close");
0
scrblnrd3 14 Дек 2013 в 02:33
Это сначала сохранится на сервере - правильно? Есть ли способ передать массивы обратно в ajax / js и вместо этого сохранить файл локально? Я бы предпочел не хранить файлы на моем сервере, но если это самый безопасный вариант, я могу пойти по этому пути. Спасибо за быстрый ответ.
 – 
limeygent
14 Дек 2013 в 02:40
Да, он сохранит его на сервере
 – 
scrblnrd3
14 Дек 2013 в 02:41
(нажмите клавишу возврата слишком быстро - а затем вы ответили почти сразу!) Есть ли способ передать массивы обратно в ajax / js и вместо этого сохранить файл локально? Я бы предпочел не хранить файлы на моем сервере, но если это самый безопасный вариант, я могу пойти по этому пути.
 – 
limeygent
14 Дек 2013 в 02:48
Предоставленное мной обновление должно покрыть это, оно автоматически загрузит файл. Вы можете unlink($file), если вам нужно удалить его. Подробнее об этом см. de2.php.net/manual/en/function.unlink. .php
 – 
scrblnrd3
14 Дек 2013 в 06:01
Чтобы поместить код в комментарии, заключите его в обратные кавычки, например <?php?>
 – 
scrblnrd3
15 Дек 2013 в 21:40