2014-01-17 2 views
0

Я пытаюсь создать php-скрипт, который возвращает CSV-файл из массива JSON, но мне сложно получить информацию в скрипте. Чтобы сделать этот CSV загружаемым, мне нужно set the headers using php и создать файл CSV на лету (так что мне не нужно его хранить на моем сервере), поэтому мне кажется, что мне нужно перенаправить браузер пользователя на мой PHP-скрипт (aka no AJAX).Использование Javascript в HTML-форме для публикации на PHP

Я хочу опубликовать 3 переменных. Идентификатор пользователя, строка сеанса и строковый массив JSON.

Я мог бы просто использовать Jquery, чтобы создать вход со значением моего JSON массива, как например:

$('html-input-element').val(stringified-JSON-array); 

Но это не кажется идеальным, так как этот массив JSON может быть тысячи строк. Есть ли способ сделать это исключительно в javascript? Я бы предпочел использовать POST, чем GET, потому что строка сеанса является конфиденциальной информацией. Спасибо!

+0

чем проблема с входной быть тысячи строк? То же самое происходит, если вы отправляете его через AJAX. – Barmar

+0

Ну, это просто немного неряшливо, чтобы добавить его в html, когда он уже является переменной javascript. – user417669

+0

Вы не добавляете его в HTML. Вы просто устанавливаете скрытое значение ввода, чтобы вы могли включить его в форму представления. – Barmar

ответ

1

просто с помощью JQuery и Ajax: JFYI: граница ввода размер настройка сервера, это не имеет значения, что вы используете Ajax или форму с входом HTML:

<form id="downloaderForm" action="downloadCsv.php" method="post"> 
<intput type="hidden" name="json" id="jsonData" /> 
</form> 

JQuery

$("#jsonData").val(yourData); 
$("#downloaderForm").submit(); 

или JS

document.getElementById("jsonData").value = yourData; 
document.getElementById("downloaderForm").submit(); 

PHP

header("Content-type: text/csv"); 
header("Content-Disposition: attachment; filename=json-cconverted-to-csv.csv"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 
echo $csvData; // Your CSV Data 
+0

Хорошо, может быть, я недопонимаю, но я действительно не хочу хранить эти файлы на своем сервере, поэтому я надеялся создать файл «на лету», используя описанный здесь метод: http://stackoverflow.com/questions/ 217424/create-a-csv-file-for-a-user-in-php/6493794 # 6493794. Трудность в том, что мне нужно убедиться, что они должны иметь возможность создавать/получать доступ к файлу, используя их строку сеанса и идентификатор пользователя. Как вы думаете? – user417669

+0

Затем вы должны добавить данные в форму, отправить их через js, позволить скрипту php вашего сервера преобразовать его в формат CSV, установить правильные заголовки, и пользователь не будет перенаправлен, ему будет предложено загрузить файл – Shehabix

+0

Итак, чтобы добавить данные в форму, вы хотите добавить ее в html, используя описанный мной метод? Или есть способ сделать это в JS? – user417669

Смежные вопросы