2013-03-12 14 views
6

Voglio inviare una forma senza lasciare la mia pagina corrente, in modo da sto usando:jquery, inviare un modulo rimanendo sulla stessa pagina

$('.myForm').on('submit', function(){ 
     $.ajax({ 
      url: $(this).attr('action'), 
      type: $(this).attr('method'), 
      data: $(this).serialize(), 
      success: function(html) { 
      alert('ok'); 
      } 
     }); 
    return false; 
}); 

ma non funziona ... qualche idea per favore?

+0

In che senso, 'non funziona'? –

+0

assicurati che il tuo modulo abbia la classe "myForm". –

+1

'return false' significa' continua' in jQuery speak. –

risposta

7

fare in questo modo: -

$(document).on('submit', '.myForm', function(e) { 
    $.ajax({ 
     url: $(this).attr('action'), 
     type: $(this).attr('method'), 
     data: $(this).serialize(), 
     success: function(html) { 
     alert('ok'); 
     } 
    }); 
    e.preventDefault(); 
}); 
+0

È necessario passare effettivamente l'evento nella funzione. –

+0

@ bmorris591: corretto. Grazie –

+0

grazie sta funzionando bene, dare un'occhiata su prevenDefault –

7

Ecco un esempio

<form name="frm" method="POST" action=""> 
<input type="text" name="name" id="name" value="" /> 
<input type="text" name="last_name" id="last_name" value="" /> 
<input type="submit" name="Update" id="update" value="Update" /> 
</form> 

jQuery parte

$("#update").click(function(e) { 
    e.preventDefault(); 
    var name = $("#name").val(); 
    var last_name = $("#last_name").val(); 
    var dataString = 'name='+name+'&last_name='+last_name; 
    $.ajax({ 
    type:'POST', 
    data:dataString, 
    url:'insert.php', 
    success:function(data) { 
     alert(data); 
    } 
    }); 
}); 

La pagina insert.php

<?php 
    $name = $_POST['name']; 
    $last_name = $_POST['last_name']; 
    $insert = "insert into TABLE_NAME values('$name','$last_name')";// Do Your Insert Query 
    if(mysql_query($insert)) { 
    echo "Success"; 
    } else { 
    echo "Cannot Insert"; 
    } 
?> 

Spero che questo aiuti

+0

sceglierei questa come la migliore risposta, anche se preferisco che il feedback degli utenti provenga dal client (non da php). – johnnaras

1

uso event.preventDefault();

$('.myForm').on('submit', function(event){ 
    event.preventDefault(); 
    $.ajax({ 
     url: $(this).attr('action'), 
     type: $(this).attr('method'), 
     data: $(this).serialize(), 
     success: function(html) { 
     alert('ok'); 
     } 
    }); 
    //return false; 
}); 
Problemi correlati