Ciro Marotta - Programmatore JAVA - PHP
Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.
@Alhazred: Quindi se ho capito bene la pagina viene "presa in consegna" da Ajax e quindi si aspetta un risultato dall'elaborazione del codice. Non basta semplicemente far avviare quella pagina.
@ciro78: Ok, chiaro.
Grazie ad entrambi
Da qualche tempo è possibile usare i websocket (una connessione bidirezionale client/server) invece del polling (chiamate Ajax cicliche).
Nulla, non ci riesco. Nella pagina php ho messo solo echo 'ricarica' e in ajax gli ho detto che se data NON è uguale a ricarica deve fare il refresh. Aiuto per favore...
codice:<script type="text/javascript"> $(document).ready(function(){ setInterval(function(){ $.ajax({ type: "POST", url: "chat_refresh.php", data: {'lastid':<?php echo $lastid ;?>}, dataType: "html", success: function(data){ if (data != ricarica) {document.location.reload(true);} }, error: function(){alert("Chiamata fallita!!!");} }); },3000); }); </script>Codice PHP:include '../db/connessione.php';
/*$lastid=$_POST['lastid'];
$sql="SELECT id FROM `chat_home` order by id desc limit 1";
$dati=mysql_query($sql);
$riga=mysql_fetch_assoc($dati);
$id_trovato=$riga['id'];
if ($id_trovato > $lastid) {
echo 'ricarica';
} */
echo 'ricarica';
La chiamata AJAX deve inviare i dati allo script php, lo script li legge come farebbe ricevendo i dati POST di un qualsiasi form.
Una vota elaborati i dati, lo script PHP deve finire con un echo in cui metti i dati che deve intercettare la chiamata AJAX, se la risposta non deve essere una semplice stringa, ma un array o altro tipo di dato complesso, formattalo in formato JSON e fa l'echo della stringa ottenuta.
Nel tuo codice dici alla chiamata AJAX cosa fare in caso di errore, ma non gli dici cosa fare se invece le cose vanno bene, quindi non fa niente.
Devi mettere
codice:success: function(data) { // data conterrà la stringa stampata da PHP // con i dati contenuti in questa stringa... facci qualcosa }
posta link alla pagina e sopratutto dicci che errore noti
Ciro Marotta - Programmatore JAVA - PHP
Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.
Ho letto diversi topic a riguardo, alla fine sono arrivato a questa soluzione:
Senza il comando return data non va.codice:$(document).ready(function(){ setInterval(function(){ $.ajax({ type: "POST", url: "../chat/chat_refresh.php", data: {'lastid': '<?php echo $lastid ;?>'}, dataType: "html", success: function(data){ mydata(data); return data; }, error: function(){alert("Chiamata fallita!!!");} }); function mydata(data){ alert(data); } },3000); });
Ora ho il problema che non mi invia la variabile lastid, infatti se in php faccio un echo di lastid di ritorno ho un campo vuoto. Lo script è a fondo pagina.
Ho un'ultima domanda, sempre legata al topic.
Uso questo comando per fare il refresh di una porzione di pagina, vorrei però che facesse il refresh senza la cache, è possibile farlo dal comando?
codice:$("#input").load(location.href+" #input>*","");