Salve,
sto usando un form per aggiungere dei commenti a dei post sul sito che sto costruendo: al click sul submit ho associato una funzione jQuery ma la funzione viene richiamata due volte e quindi i dati nel database sono inseriti due volte!
Il form è questo:
Questa è la funzione richiamata al click sul submit:
Ho provato varie soluzioni che hanno fallito tutte:
Nessuno di questi metodi risolve il problema nè mi aiuta a capire qual'è....
Ps:ho cercato altre discussioni simili nel forum, non ne ho trovate...
sto usando un form per aggiungere dei commenti a dei post sul sito che sto costruendo: al click sul submit ho associato una funzione jQuery ma la funzione viene richiamata due volte e quindi i dati nel database sono inseriti due volte!
Il form è questo:
Codice:
<form action="#" method="post" id="form_comment">
<textarea name="comment<?php echo $id; ?>" id="comment<?php echo $id; ?>" rows="1" cols="29"></textarea>
<button type="submit" id="mySubmitButton" value="" />
<input type="hidden" name="post_id" id="post_id" value="<?php echo $id; //qui recupero l'id del post che sto commentando ?>"/>
<input type="hidden" name="verifica_login" id="verifica_login" value="<?php if(isset($_SESSION['nome_user'])) echo $_SESSION['nome_user']; else echo 'no'; // questo valore mi permette di verificare se l'ut è loggato?>"/>
</form>
Questa è la funzione richiamata al click sul submit:
Codice:
<script type="text/javascript">
$(function() {
$("#mySubmitButton").click(function() {
//$('#mySubmitButton').attr('disabled', true); //disabilita il tasto submit, l'applicazione di questa riga non risolve il problema
var post_id = $("#post_id").val(); //questo è l'id del post che passo alla pag insert_comment_db.php per inserire il commento del db
var comment = $("#comment"+post_id).val();
var dataString = '&comment=' + comment + '&post_id=' + post_id;
var login = $("#verifica_login").val();
if( comment=='')
{
alert('Please insert a comment: '+post_id);
}
else
{
if(login == 'no')
{
alert('You have to login to comment');
}
else
{
$("#flash").show();
$("#flash").fadeIn(400).html('<span class="loading">Loading Comment...</span>');
$.ajax({
type: "POST",
url: "insert_comment_db.php",
data: dataString,
cache: false,
success: function(html){
$("div#update<?php echo $id; ?>").append(html);
$("div#update<?php echo $id; ?> li:last").fadeIn("slow");
document.getElementById('comment<?php echo $id; ?>').value='';
$("#flash").hide();
//alert('inserito in db'); // questo alert viene richiamato due volte
}
});
}
return false;
}
});
});
</script>
Ho provato varie soluzioni che hanno fallito tutte:
- Ho sostituito $("#mySubmitButton").click con $("#form_comment").submit
- ho rimosso i tag dei form di apertura e chiusura (<form> </form>)
- ho rimosso tutti gli if ed else che uso per dei controlli nella funzione
- ho chiamato il tasto submit in vari modi, <input type="submit"> o <button> etc...
- ho rimosso l' "action=#" dal form
- usato vari browser: chrome, ff, IE con tutti lo stesso problema
Nessuno di questi metodi risolve il problema nè mi aiuta a capire qual'è....
Ps:ho cercato altre discussioni simili nel forum, non ne ho trovate...