asked on
$(document).ready(function() {
// Function to create table layout
function createTable(data) {
var table = document.createElement('table');
var header = table.insertRow();
for(var h in data[0]) {
var th = document.createElement('th');
th.innerHTML = h;
header.appendChild(th);
}
table.classList.add('table','table-bordered');
data.forEach(function(item) {
var row = table.insertRow();
for(var v in item) {
var cell = row.insertCell();
if (Array.isArray(item[v])) {
var subtable = createTable(item[v]);
cell.appendChild(subtable);
}
else {
cell.innerHTML = item[v];
}
}
})
return table;
}
// Initialize air datepicker plugin
$('.air-datepicker').datepicker();
// Store form into variable
var form= $("#requestForm");
// Actions when form is submitted
$('#submitForm').click(function(e) {
// Ajax request
$.ajax({
type: "POST",
url: form.attr("action"),
data: form.serialize(),
success: function(result){
// Show the table container
$('#tableContainer').css('display','block');
// Convert reponse into JSON
datas = JSON.parse(result);
// Get nome condominio and show it
$('#nome_condominio').html(datas.condomini[0].condominio.nome);
// Get indirizzo condomino and show it
$('#indirizzo_condominio').html(datas.condomini[0].condominio.indirizzo);
// Put datas into table using the function createTable
var table = createTable(datas.condomini[0].ricevute);
// Show table
$('#table').append(table);
console.log(result);
},
error: function(error, status, xhr) {
console.log(error, status, xhr);
}
}); // Fine ajax
e.preventDefault(); // Prevent form to be sent
}); // fine submit form
}); // fine document ready
<form id="requestForm" action="../km-client-controllers/km-ctrl-client-ricevute.php" method="POST">
<div class="form-row">
<div class="form-group col-md-3">
<label for="startDate">Data di inizio ricevuta</label>
<input type="text" class="form-control air-datepicker" data-date-format="dd/mm/yyyy" data-language='en' placeholder="Data di inizio" id="startDate" name="startDate">
</div>
<div class="form-group col-md-3">
<label for="endDate">Data di fine ricevuta</label>
<input type="text" class="form-control air-datepicker" data-date-format="dd/mm/yyyy" data-language='en' placeholder="Data di fine" id="endDate" name="endDate">
</div>
</div>
<button type="submit" class="btn btn-primary" id="submitForm" >Mostra ricevute</button>
</form>
<div class="container-fluid" id="tableContainer" style="display: none" >
<h2 class="text-center"><div id="nome_condominio"></div></h2>
<h4 class="text-center"><div id="indirizzo_condominio"></div></h4>
<br>
<div id="table"></div>
</div>
session_start();
$startDate = $_POST['startDate'];
$endDate = $_POST['endDate'];
$dates= array(
'd_inizio' => $startDate,
'd_fine' => $endDate
);
$url = "https://www.apiwebsite.com/api/ricevute.jsp?";
if (!isset($_SESSION['cookiefile'])) {
die("no cookie file");
}
$cookie = "../../km-controllers/" . $_SESSION['cookiefile'];
$ch = curl_init ($url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($dates));
curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec ($ch);
curl_close($ch);
echo $output;
ASKER
$('#table').append(table);
$('#table').html(table);
ASKER
JavaScript is a dynamic, object-based language commonly used for client-side scripting in web browsers. Recently, server side JavaScript frameworks have also emerged. JavaScript runs on nearly every operating system and in almost every mainstream web browser.
TRUSTED BY
You can use PhantomJS + be done in a few minutes.
Check the examples page on the site to pull down one of the many example scripts as a starting point.
PhantomJS - headless Chrome, so Javascript + CSS oddities all processed correctly... unlike CURL...