ajax - Manually sending a post in PHP -
i have form validated client side before being submitted via ajax request server server-side validation. should validation fail server side postback need made containing error messages. there way can this?
for example:
if ((!empty($nameerror) && (!empty($emailerror)) { $_post['nameerror'] = $nameerror; $_post['emailerror'] = $emailerror; // send postback values } else { echo 'no errors'; }
update ------------------------------------------------
here javascript handles submission of form:
$(".button").click(function() { $(".error").hide(); var name = $(":input.name").val(); if ((name == "") || (name.length < 4)){ $("label#nameerr").show(); $(":input.name").focus(); return false; } var email = $(":input.email").val(); if (email == "") { $("label#emailerr").show(); $(":input.email").focus(); return false; } var phone = $(":input.phone").val(); if (phone == "") { $("label#phoneerr").show(); $(":input.phone").focus(); return false; } var comment = $.trim($("#comments").val()); if ((!comment) || (comment.length > 100)) { $("label#commenterr").show(); $("#comments").focus(); alert("hello"); return false; } var info = 'name:' + name + '&email:' + email + '&phone:' + phone + '&comment:' + comment; var ajaxurl = '<?php echo admin_url("admin-ajax.php"); ?>'; alert(info); jquery.ajax({ type:"post", datatype:"json", url: myajax.ajaxurl, data: {action: 'submit_data', info: info}, success: function(response) { if (response.type == "success") { alert("success"); } else { alert("fail"); } } }); $(":input").val(''); return false; });
and here php function ajax posts to:
function submit_data() { $nameerr = $emailerr = $phoneerr = $commenterr = ""; $full = explode("&", $_post["info"]); $fname = explode(":", $full[0]); $name = $fname[1]; $femail = explode(":", $full[1]); $email = $femail[1]; $fphone = explode(":", $full[2]); $phone = $fphone[1]; $fcomment = explode(":", $full[3]); $comment = $fcomment[1]; if ((empty($name)) || (strlen($name) < 4)){ $nameerr = "please enter name"; } else if (!preg_match("/^[a-za-z ]*$/", $name)) { $nameerr = "please ensure have entered name , surname"; } if (empty($email)) { $emailerr = "please enter email address"; } else if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email)) { $emailerr = "please ensure have entered valid email address"; } if (empty($phone)) { $phoneerr = "please enter phone number"; } else if (!preg_match("/(?:\(?\+\d{2}\)?\s*)?\d+(?:[ -]*\d+)*$/",$phone)) { $phoneerr = "please ensure have entered valid phone number"; } if ((empty($nameerr)) && (empty($emailerr)) && (empty($phoneerr)) && (empty($commenterr))) { $conn = mysqli_connect("localhost", "john", "change9", "plugindatadb"); mysqli_query($conn, "insert data (name, email, phone, comment) values ('$name', '$email', '$phone', '$comment')"); } else { // display error messages } die(); }
your answer in 2 parts:
pseudo code:
part1: php
if ($error) { $reply["status"]=false; $reply["message"]="fail message"; //here have put own message, maybe use variable validation did before line: $reply["message"] = $fail_message. } else { $reply["status"]=true; $reply["message"]="success message"//$reply["message"] = $success_message; } echo json_encode($reply);//something {"status":true, "message":"success message"}
part2 ajax: modify ajax response this.
success: function(response) { if (response.status == true) { alert("success: "+response.message); } else { alert("fail: " + response.message); } }
Comments
Post a Comment