2014-09-17 15 views
19

Ho 1 pagina principale con una forma e un'altra pagina per elaborare il valore di modulo qui sono i codici sorgente delle pagine 2

modulo della pagina:

<meta charset="UTF-8"> 
<title>Form Page</title> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<form action="process.php" method="post" id="reg-form"> 
     Username: <input type="text" id="username" name="username"> 
     <br> 
     Password: <input type="password" id="password" name="password"> 
     <br> 
     <button type="submit" id="submit-btn">Traditional Submit</button> 
     <button type="button" id="post-btn">$.Post Submit</button> 
</form> 
<script> 
    $("#post-btn").click(function(){   
     $.post("process.php",function(data){ 
      alert(data); 
     }); 
    }); 
</script> 

processo Pagina:

<?php 
$username=$_POST["username"]; 
$password=$_POST["password"]; 
echo "Username: ".$username; 
echo "<br>"; 
echo "Password: ".$password;?> 

se scatto il "tradizionale Invia "buttton, funziona perfettamente.

ma quando clicco sul "$ .Pubblicare Invia" pulsante, ho appena continuo a ricevere errore msg "Avviso: Indice non definito ..."

io non riesco a capire dove sia il problema, aiuto gentile di controllo e aggiusta, grazie in anticipo!

+0

sì, sto cercando di utilizzare Ajax per elaborare i valori del modulo e rimanere sulla pagina principale (invece di essere reindirizzato alla pagina del processo come usare il modulo tradizionale submit) – Yolo

risposta

40

È necessario selezionare e inviare i dati del modulo così:

$("#post-btn").click(function(){   
    $.post("process.php", $("#reg-form").serialize(), function(data) { 
     alert(data); 
    }); 
}); 

Date un'occhiata alla documentazione per il metodo di jQuery serialize, che codifica i dati dai campi di modulo in un stringa di dati da inviare al server.

+1

Semplicemente aggiungendo a questo: 'action =" process.php "method =" post "' non è più necessario sull'elemento '

' dato che l'invio è gestito da jQuery AJAX '. metodo post(). – nyedidikeke

6

Ottieni il valore delle tue caselle di testo utilizzando val() e memorizzale in una variabile. Passa questi valori attraverso $.post. Nell'utilizzo di $.Post Submit button è possibile rimuovere il modulo.

<script> 

    username = $("#username").val(); 
    password = $("#password").val(); 

    $("#post-btn").click(function(){   
     $.post("process.php", { username:username, password:password } ,function(data){ 
      alert(data); 
     }); 
    }); 
</script> 
+2

Ancora meglio, utilizzare il metodo ['serialize' ] (http://api.jquery.com/serialize/) –

+1

@SeanVieira Non so come usarlo. Qual è lo scopo di questo? Lo stavo imparando ma non capisco :) Per favore dimmi –

+5

'serialize' prende una forma (o una serie di input) e trasforma tutti i tag' input', 'select' e' textarea' in una stringa adatta per l'invio come corpo di una richiesta POST HTTP (o come stringa di query di una richiesta GET). Ad esempio, serializzando un modulo con il campo singolo, '' diventa '" firstName = Sean "'. –

4

Yor $.post non ha dati. Devi passare i dati del modulo. È possibile utilizzare serialize() per pubblicare i dati del modulo. Prova questo

$("#post-btn").click(function(){ 
    $.post("process.php", $('#reg-form').serialize() ,function(data){ 
     alert(data); 
    }); 
}); 
Problemi correlati