Grazie per la risposta. Funziona tutto quasi perfettamente adesso, quasi perché IE 7 e 8 presentano un "bug" col codice che segue:
Codice PHP:
$('a.prenota_id').live("click",(function(e) {
e.preventDefault();
var parent = $(this).parent();
var ImgSrcValue = $(this).children().attr('src');
// [IMG] Codice che "decide" quale immagine mostrare dopo la chiamata ajax
// Se prenoti seleziona ImgA, se elimini prenotazione seleziona ImgB
// [/IMG]
$.ajax({
type: 'get',
url: 'script.php',
data: 'task=prenota&id=' + parent.attr('id').replace('prenota_',''),
dataType: 'html',
beforeSend: function() {
parent.html('[img]/img/ajax-loader.gif[/img]');
},
error: function() {
parent.html('[img]/img/remove.png[/img]');
},
success: function(data) {
var serverData = $("#serverData", data).html();
if (serverData)
$('#op_' + parent.attr('id').replace(prenota_','')).hide('blind','slow',alert(serverData));
else parent.html('[url="?task=prenota&id=' + parent.attr('id').replace('prenota_','') + '"][img]' + imgSrc +'[/img][/url]');
}
});
}));
Il "bug" è alla riga:
Codice PHP:
var serverData = $("#serverData", data).html();
Succede che l'immagine ajax-loader.gif si "ferma" e solo muovendo il mouse si carica l'immagine successiva. Poichè tutto deve poter funzionare in assenza di Javascript, viene restituita una discreta quantità di codice HTML.
All'interno del quale, se la query di UPDATE fallisce perché un altro utente ha prenotato un istante prima, genero anche il div serverData e recupero l'ALERT, che è il messaggio del server.
Pare che discrete quantità di html restituite inducano il freeze su IE, non su FF, Opera, Chrome e Safari. Qualcun sa se siste un altro modo di ottenere lo stesso risultato evitando il bug, magari ottimizzando il codice o utilizzando una logica diversa?
Grazie.