Чтобы помочь вам решить вашу проблему, я быстро собрал простую демонстрацию, которая, при изучении и анализе, должна помочь вам найти ваше решение, я надеюсь.
Нет jQuery
, потому что я не используюэто - вместо этого есть некоторые основные функции javascript ванили и несколько очень простых PHP.
Обзор при начальной загрузке страницы, переменная сеанса создается со значением по умолчанию, равным нулю.Для кнопки назначен простой event listener
, который при нажатии запускает запрос ajax.Ajax-запрос обрабатывается PHP, который увеличивает счетчик и отправляет обратно html-контент.
<?php
/* start a session */
session_start();
/* create the variable to count tickets */
if( empty( $_SESSION['tickets'] ) )$_SESSION['tickets']=0;
/* process ajax request - increment session variable and send some html back for the callback to mangle */
if( $_SERVER['REQUEST_METHOD']=='POST' && !empty( $_POST['action'] ) && $_POST['action']=='add-ticket' ){
ob_clean();
/* increment the counter */
$_SESSION['tickets']++;
/* send some new HTML back with content */
exit(
sprintf(
'<tr>
<td>%d</td>
<td>%s</td>
</tr>',
$_SESSION['tickets'],
date( 'Y-m-d H:i:s' )
)
);
}
?>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8' />
<title>PHP Sessions and Tickets</title>
<script>
const ajax=function(url,params,callback){
let xhr=new XMLHttpRequest();
xhr.onload=function(){
if( this.status==200 && this.readyState==4 )callback.call( this, this.response )
};
xhr.onerror=function(e){
alert(e)
};
xhr.open( 'POST', url, true );
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xhr.setRequestHeader('X-Requested-With','XMLHttpRequest');
xhr.send( buildparams( params ) );
};
const buildparams=function(p){
if( p && typeof( p )==='object' ){
p=Object.keys( p ).map(function( k ){
return typeof( p[ k ] )=='object' ? buildparams( p[ k ] ) : [ encodeURIComponent( k ), encodeURIComponent( p[ k ] ) ].join('=')
}).join('&');
}
return p;
};
document.addEventListener('DOMContentLoaded',function(){
let bttn=document.querySelector('input[type="button"][name="add"]');
let tbl=document.querySelector('form > table');
let span=document.querySelector('div > span');
bttn.addEventListener( 'click', function(e){
ajax.call( this, location.href,{ action:'add-ticket' }, function(r){
tbl.querySelector('tbody').insertAdjacentHTML( 'beforeend', r );
span.innerText++;
})
},false );
},false );
</script>
<style>
table{width:80%;border:1px solid black;float:none;margin:auto;}
th,td{padding:1rem;text-align:center;background:white;}
input{width:100%;padding:1rem;margin:1rem auto}
</style>
</head>
<body>
<form>
<table>
<tr>
<th>Ticket Count</th>
<th>Datetime</th>
</tr>
</table>
<input type='button' name='add' value='Add Ticket' />
</form>
<?php
printf( '<div>The current ticket count is: <span>%d</span></div>', empty( $_SESSION['tickets'] ) ? 0 : $_SESSION['tickets'] );
?>
</body>
</html>