Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
1 / 1 / 0
Регистрация: 25.06.2014
Сообщений: 151

Добавление сгенерированного файла в форму

15.06.2016, 20:49. Показов 2908. Ответов 51
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день всем участникам!

Путем длительного поиска и усилий удалось найти решение как сохранить таблицу. Удалось это реализовать с помощью скрипта, который сохраняет таблицу в exel и все вроде ок, но опять тупик не могу понять как сделать, чтоб генерируемый файл после нажатия на кнопку не скачивался, а добавлялся в форму с дальнейшей отправкой по почте?
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<html>
 
<script type="text/javascript">
var tableToExcel = (function() {
  var uri = 'data:application/vnd.ms-excel;base64,'
    , template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>'
    , base64 = function(s) { return window.btoa(unescape(encodeURIComponent(s))) }
    , format = function(s, c) { return s.replace(/{(\w+)}/g, function(m, p) { return c[p]; }) }
  return function(table, name) {
    if (!table.nodeType) table = document.getElementById(table)
    var ctx = {worksheet: name || 'Worksheet', table: table.innerHTML}
    window.location.href = uri + base64(format(template, ctx))
  }
})()
</script>
<body> 
 
 
<form  id="frmselect1"> 
 
<p>Имя: </p><p> <input type= "text" name= "name"> </p> 
 
<p>E-mail: </p><p> <input type= "text" name= "email"></p> 
 
<p>Сообщение: </p><p> <textarea rows= "10" cols= "45" name= "message"></textarea></p> 
 
 
<table id="tbl" cellspacing="0" cellpadding="5" border="0">
<thead ><tr><th></th><th>Высота мм</th><th>Ширина мм</th><th>Кол-во</th><th>Толщина мм</th><th>Квадратура</th><th>Рисунок</th><th>Цена</th><th>Пленка</th><th>Удалить</th></tr></thead>
<tbody></tbody>
<tfoot>
<tr><th colspan="9" style="text-align:right;">Итого деталей МДФ:</th><th></th></tr>
<tr><th colspan="9" style="text-align:right;">Площадь МДФ:</th><th></th></tr>
<tr><th colspan="9" style="text-align:right;">Всего:</th><th></th></tr>
</tfoot></table>
  
<input type= "submit" value= "Отправить"> 
</form>  
</body></html>

и совсем забыл про кнопку , после нажатия на которую просходит конвертация таблицы и автоскачивание
JavaScript
1
<input type="button" onclick="tableToExcel('tbl', 'W3C Example Table')" value="Export to Excel">
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.06.2016, 20:49
Ответы с готовыми решениями:

Добавление данных на форму с текстового файла
Здравствуйте, возникла необходимость сделать тоже самое что и в этой теме https://www.cyberforum.ru/vb-net/thread948561.html только на QT ...

Чтение данных из файла и добавление их на форму
Здравствуйте. Нужно открыть текстовый файл, найти слово &quot;Дата&quot;, и цыфры, следующие за словом добавить в поле Едит. Пока могу только открыть...

Добавление данных на форму с текстового файла
Всем доброго времени суток, подскажите вот что, я хотел бы сделать вот так : есть текстовый файл с названиями и характеристиками авто. ...

51
1 / 1 / 0
Регистрация: 25.06.2014
Сообщений: 151
20.06.2016, 21:04  [ТС]
Студворк — интернет-сервис помощи студентам
BANO, спасибо вам за помощь и терпеливость, но хотелось бы продолжить))
если продолжать дальше логику, тогда получается, что можно и нужно сделать Ajax отправку данных уже не свяханную с формой и вставить его отдельно! вот мой пример
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$(document).ready(function(){
        var form = new FormData();
        formData.append("file", base64(format(template, ctx)))
        $.ajax({
            type: "POST",
            processData: false,
            contentType: false,
            url: "/send.php",
            data: form
        }).done(function(data) {
            $("#sendform").html('<p class="thank">Данные отправлены!<p>');
        }).feil(function() {
            // тут обрабатываем ошибку
        });
    }
 
})
поправьте пожалуйста если что не так сделал...
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
20.06.2016, 21:11
 Комментарий модератора 
andrett, пункт правил 4.6
предупреждение


если вам не надо прикреплять к форме, то можно сделать вообще вот так
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
$(function(){
        $.ajax({
            type: "POST",
            url: "/send.php",
            data: {file: base64(format(template, ctx))}
        }).done(function(data) {
            $("#sendform").html('<p class="thank">Данные отправлены!<p>');
        }).feil(function() {
            // тут обрабатываем ошибку
        });
    }
})
1
1 / 1 / 0
Регистрация: 25.06.2014
Сообщений: 151
21.06.2016, 13:17  [ТС]
BANO, тут очень хороший человек подсказал одну мысль....
во первых этот код не рабочий
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
<script type="text/javascript">$(function(){
        $.ajax({
            type: "POST",
            url: "/send.php",
            data: {file: base64(format(template, ctx))}
        }).done(function(data) {
            $("#sendform").html('<p class="thank">Данные отправлены!<p>');
        }).feil(function() {
            // тут обрабатываем ошибку
        });
    }
})</script>
,

во вторых, этот код срабатывает сразу после загрузки страницы, а не после отправки данных

Вообщем можно для теста,
попробовать такой код:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 var tableToExcel = (function() {
  var uri = 'data:application/vnd.ms-excel;base64,'
    , template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>'
    , base64 = function(s) { return window.btoa(unescape(encodeURIComponent(s))) }
    , format = function(s, c) { return s.replace(/{(\w+)}/g, function(m, p) { return c[p]; }) }
  return function(table, name) {
    if (!table.nodeType) table = document.getElementById(table)
    var ctx = {worksheet: name || 'Worksheet', table: table.innerHTML}
//    window.location.href = uri + base64(format(template, ctx))
    
        $.ajax({
            type: "POST",
            url: "/send.php",
            data: {file: base64(format(template, ctx))}
        }).done(function(data) {
            $("#sendform").html('<p class="thank">Данные отправлены!<br/>'+data+'<p>');
        }).feil(function() {
            // тут обрабатываем ошибку
        });
  }
})()
Как здесь попробовать алертом вывести отправляемые аяксом данные,
и перед отправкой, написать принимающий скрипт, и посмотреть что он примет и принимает ли вообще...?
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
21.06.2016, 13:42
Цитата Сообщение от andrett Посмотреть сообщение
во первых этот код не рабочий
в чём его неработоспособность?

Цитата Сообщение от andrett Посмотреть сообщение
во вторых, этот код срабатывает сразу после загрузки страницы, а не после отправки данных
я просто переписал код данный вами на более нормальный

Цитата Сообщение от andrett Посмотреть сообщение
Вообщем можно для теста,
ох, задолбался я уже на кофейной гуще гадать
скиньте архивом сюда страницу с кодом
0
1 / 1 / 0
Регистрация: 25.06.2014
Сообщений: 151
21.06.2016, 13:43  [ТС]
BANO, а можно, только в личку отправить?
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
21.06.2016, 13:48
andrett, пункт правил 4.6
Обсуждение вопросов - только в теме на форуме. Приглашения к обсуждению еще где-либо (в том числе и с помощью системы личных сообщений) запрещены, за исключением коммерческих разделов.
Да и не волнуйтесь вы так, кому нужна ваша форма? я вам больше скажу, в эту тему никто не заглянет, потому что мы уже 45 сообщений отправили, а эффекту никакого
0
1 / 1 / 0
Регистрация: 25.06.2014
Сообщений: 151
21.06.2016, 13:55  [ТС]
BANO, только у меня не страницы, а я из темы wordpress выдернул файлы
Вложения
Тип файла: zip forma.zip (9.8 Кб, 3 просмотров)
0
1 / 1 / 0
Регистрация: 25.06.2014
Сообщений: 151
21.06.2016, 14:00  [ТС]
вот еще скрипт забыл
Вложения
Тип файла: zip sitecalpro .zip (2.1 Кб, 3 просмотров)
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
21.06.2016, 14:36
andrett, короче, сейчас я сделаю полуавтономную функцию, которую вам просто надо будет вызвать и она отправит таблицу на скрипт send.php, там вы получите текст файла с помощью вот этого кода и будете делать с ним всё что захотите

Добавлено через 9 минут
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// передаём в функцию элемент таблицы или её селектор, в общем не важно
function sendTableToServer(table, name, cb) {
    var uri = 'data:application/vnd.ms-excel;base64,'
        , template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>'
        , base64 = function(s) { return window.btoa(unescape(encodeURIComponent(s))) }
        , format = function(s, c) { return s.replace(/{(\w+)}/g, function(m, p) { return c[p]; }) }
    var ctx = {worksheet: name || 'Worksheet', table: $(table).html()}
    $.ajax({
        type: "POST",
        url: "/send.php",
        data: {file: base64(format(template, ctx))}
    }).done(function(data) {
        cb(null, data)
    }).feil(function(error) {
        cb(error)
    });
  
}
 
// пример использования
sendTableToServer("#myTable", "test", function (error, data) {
    if (error === null){
        // ошибки не было, всё прошло нормально
        $("#sendform").html('<p class="thank">Данные отправлены!<br/>'+data+'<p>');
    } else {
        // случилась ошибка, обрабатываем её
    }
})
1
1 / 1 / 0
Регистрация: 25.06.2014
Сообщений: 151
21.06.2016, 15:52  [ТС]
BANO, после подстановки скрипта не открывается окно формы, а пишет сразу что данные отправлены!

Добавлено через 9 минут
и надо ли в примере использования поменять ID таблицы #myTable на свой?
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
21.06.2016, 16:04
конечно поменять надо
а ещё функцию надо вызывать только после того, как вы отвалидировали форму
1
1 / 1 / 0
Регистрация: 25.06.2014
Сообщений: 151
21.06.2016, 19:24  [ТС]
Добавлено через 1 час 45 минут
BANO, я понял, пробую! отпишусь!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.06.2016, 19:24
Помогаю со студенческими работами здесь

Добавление в форму только имени файла без адреса.
Подскажите пж как сделать что бы этот скрипт вставлял в форму только имя файла без адреса? $('#file').change(function () { ...

[C++ Builder XE7] Добавление анимации на форму из готового .avi файла
Здравствуйте! Имеется тема курсовой на игровую тематику. Среда разработки C++ Builder XE7 В игре есть персонаж, состояние персонажа будет...

Сохранение файла сгенерированного на сервере (JAVA+Servlet)
Доброго времени суток. Создаю xls файл в servlet и пытаюсь сохранить его во временную папку для скачивания. Делаю так: try...

Содержимое сгенерированного числового файла INPUT проинтерпретировать как последовательность квадратных матриц размера 2X2 и записать их в файлы 2
Содержимое сгенерированного числового файла INPUT проинтерпретировать как последовательность квадратных матриц размера 2X2 и записать...

Добавление на форму
Добрый день , вопрос такой есть несколько классов, первый вызов других классов. import javax.swing.JFrame; import...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
52
Ответ Создать тему
Новые блоги и статьи
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru