Morge,

Ik heb Ajax weer even nodig, is weer een tijd terug dat ik het heb gebruikt, dus ik dacht ik doe even een tutorial. Maar ik krijg hem niet werkend, alles insert maar hij blijft verversen.

Ja ik weet dat het mysql is, PDO/mysqli is beter etc etc, maar dat komt allemaal later wel, ik wil eerst even ophelderen hoe dat Ajax werkt.


index.php
<html>
    <head>
        <script src="http://code.jquery.com/jquery-latest.js"></script>
        <script src="js/script.js"></script>
    </head>
    <body>
        <form id="myForm" action="action1.php" method="post">
        Name: <input type="text" name="name" /><br />
        Age : <input type="text" name="age" /><br />
        <button id="sub">Save</button>
        </form>
    </body>
</html>


script.js

$("#sub").click( function() {
 $.post( $("#myForm").attr("action"), 
         $("#myForm :input").serializeArray(), 
         function(info){ $("#result").html(info); 
   });
 clearInput();
});
 
$("#myForm").submit( function() {
  return false;	
});

function clearInput() {
	$("#myForm :input").each( function() {
	   $(this).val('');
	});
}


<?php
include_once('includes/connection.php');

$name = $_POST['name'];
$age = $_POST['age'];

if(mysql_query("INSERT INTO user VALUES('$name', '$age')"))
echo "Successfully Inserted";
else
echo "Insertion Failed";

?>

Aangepaste code na reactie:

$("#sub").click( function() {
 (event.preventDefault) ? event.preventDefault() : event.returnValue = false;
 $.post( $("#myForm").attr("action"), 
         $("#myForm :input").serializeArray(), 
         function(info){ $("#result").html(info); 
   });
 clearInput();
});

function clearInput() {
	$("#myForm :input").each( function() {
	   $(this).val('');
	});
}
Dat werkt ook niet, vreemd, het form zou niet gesubmit moeten worden dan lijkt me. Alsnog wordt de pagina ververst en de query uitgevoerd.
Mis je deze code niet?


$( document ).ready(function() {
	// Hier al je eigen gemaakt JS-functies met jQuery

	// hier al je JS code met jQuery
});


Verder zie ik wel SQL-injection:

  if(mysql_query("INSERT INTO user VALUES('$name', '$age')"))

Dus escape $name en $age even met mysql_real_escape_string()
Die code is inderdaad wel handig ja, hij werkt nu. En ik heb totaal niet gelet op veiligheidsfoutjes, moest alleen weer even weten hoe Ajax in elkaar stak. Thanks
Scherp Aar, lijkt er inderdaad op dat de javascript code wordt gelezen voor de html elementen bestaan en dan is de hele javascript code nutteloos, want die wordt niet aan elementen gehangen.
Haha top Aar ;) In ieder geval nog één wakker.
[color=red]/me deelt een paar bakjes koffie uit.[/color]

Maar ik geef eerlijk toe. Mij is dit ook wel eens overkomen, dat ik die $( document ).ready(function() { vergat. Of een stel functies met jQuery VOOR je ready aan het uitvoeren was, die uiteraard niet werkten.
Bedankt voor de koffie! Is inderdaad iets om makkelijk te vergeten :)

Reageren