Путем длительного поиска и усилий удалось найти решение как сохранить таблицу HTML. Удалось это реализовать с помощью скрипта, который сохраняет таблицу в exel и все вроде ок, но .. все никак не удается найти рабочее решение, чтобы при нажатии на кнопку, активировалось действие скрипта 1(который выполняет функцию конвертации таблицы HTML в Exel), при этом конвертируемый файл Exel автоматически добавился в форму для отправки!
Для работы есть все необходимое форма, PHP обработчик, JS конвертер и JS отправка формы с вложением.. все полностью рабочее.. вот только связать не получается форма+конвертируемый файл..
Помогите пожалуйста.
Вот код:
скрипт 1 конвертер таблицы HTML
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))
}
})()
форма
<form action="#" method="post" id="sendform" enctype="multipart/form-data" >
<input name="file" value="1" size="40" type="file" />
<input value="Отправить" name="sendMail" type="submit" />
</form>
скрипт 2 для отправки формы
// Как только страничка загрузилась
window.onload = function () {
// проверяем поддерживает ли браузер FormData
if(!window.FormData) {
/* * если не поддерживает, то выводим
* то выводим предупреждение вместо формы */
var div = ge('content');
div.innerHTML = "Ваш браузер не поддерживает объект FormData";
div.className = 'notSupport';
}
}
$(document).ready(function(){
// =validation
var errorTxt = 'Ошибка отправки';
$("#sendform").validate({
submitHandler: function(form){
var form = document.forms.sendform,
formData = new FormData(form),
xhr = new XMLHttpRequest();
xhr.open("POST", "/send.php");
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
if(xhr.status == 200) {
$("#sendform").html('<p class="thank">Данные отправлены!<p>');
}
}
};
xhr.send(formData);
}
});
})
function sendSuccess(callback){
$(callback).find("form fieldset").html(thank);
и еще PHP который работает в связке
<?php
$to = 'barselonaua@gmail.com';
if ( isset( $_POST['sendMail'] ) ) {
$name = substr( $_POST['name'], 0, 64 );
$tel = substr( $_POST['tel'], 0, 64 );
$email = substr( $_POST['email'], 0, 64 );
$message = substr( $_POST['message'], 0, 250 );
if ( !empty( $_FILES['file']['tmp_name'] ) and $_FILES['file']['error'] == 0 ) {
$filepath = $_FILES['file']['tmp_name'];
$filename = $_FILES['file']['name'];
} else {
$filepath = '';
$filename = '';
}
$body = "Имя:\r\n".$name."\r\n\r\n";
$body .= "Контактный номер:\r\n".$tel."\r\n\r\n";
$body .= "E-mail:\r\n".$email."\r\n\r\n";
$body .= "Описание заказа:\r\n".$message;
send_mail($to, $body, $email, $filepath, $filename);
}