Hi, Many thanks for the help. I had a go at implementing what you suggested but I'm clearly still missing something.
Here is my $.ajax() call: ------------------ $(document).ready(function(){ $("form#submit").submit(function() { var email = $('#email').attr('value'); $.ajax({ type: "POST", url: "ajax.php", data: "email="+ email, success: function(del){ if(del.result == 1) { $('form#submit').hide(); $('div.success').fadeIn('medium'); } else { $('div.error').show(); } } }); return false; }); }); ------------------ And here is my json array in PHP: ------------------ $message = $_POST['email']; if($message != '') { mail('some-em...@email.com', 'Ajax test', $message); $json_data = array('result' => 1). } else { $json_data = array('result' => 0, 'error' => 'This is an error'). } json_encode($json_data); ------------------ I'm obviously not accessing del.result correctly because $ ('div.error').show(); is always executed regardless of the value of result. Where am I going wrong? Thanks in advance, Rob. On Jan 4, 2:41 pm, donb <falconwatc...@comcast.net> wrote: > Return a JSON object. > > Construct a PHP array such as $json_data = array('result' => 0, > 'error' => 'This is an error'). End your PHP script with json_encode > ($json_data). Then you can reference del.result and del.error (I'm > referring to your definition of the' success' function from your > sample code) > > On Jan 4, 7:16 am, rob303 <r...@cube33.com> wrote: > > > Hi, > > > I'm new to ajax and jquery but I'm not new to PHP. The following > > example seems to work okay to a point but I can't figure out how to > > handle data validation errors generated in my PHP. > > > In my example I want to post some data to a script called ajax.php. > > That script will check the data for validity and then return true or > > false depending on the outcome of the checks. It will also set an > > appropriate error message. > > > How can I handle the returned data and display an error message if > > needed in ajax? > > > ---------------------- > > HTML / Ajax - test.php > > ---------------------- > > <?php > > > require_once("includes.php"); > > > ?> > > <html> > > <head> > > <script src="js/jquery.js" type="text/javascript"></script> > > <script type="text/javascript"> > > $(document).ready(function(){ > > $("form#submit").submit(function() { > > var email = $('#email').attr('value'); > > $.ajax({ > > type: "POST", > > url: "ajax.php", > > data: "email="+ email, > > success: function(del){ > > $('form#submit').hide(); > > $('div.success').fadeIn('medium'); > > // what if the data failed validation in PHP? > > // we need to show 'div.error". > > } > > }); > > return false; > > }); > > }); > > </script> > > </head> > > <body> > > <form id="submit" method="post"> > > Email: > > <input id="email" class="text" name="email" size="20" > > type="text" /> > > <input type="submit" value="send mail" /> > > </form> > > <div class="success" style="display:none;"> > > Email sent. > > </div> > > <div class="error"> > > <?php echo $userError; ?> > > </div> > > </body> > > </html > > > ---------------------- > > PHP - ajax.php > > ---------------------- > > <?php > > > require_once("includes.php"); > > > $message = $_POST['email']; > > > if($message != '') { > > mail('some-em...@email.com', 'Ajax test', $message); > > return 1;} else { > > > $userError = "Please enter your email address"; > > return 0; > > > } > > > ?> > > > I've been searching the web for an answer but can't find one > > anywhere! Any help would be greatly appreciated.