Hi
I have dynamically generated page with multiple forms on. When a form is submitted I wish to show a simple success / fail message within the form wrapper.
If I disable the javascript the form is received by the back end PHP via $_POST but with the javascript enabled it's received via $_GET!
How do I force the jQuery to 'post' the form?
<!doctype html><html><head><title>Test form</title><link rel="stylesheet" href="/jquery-ui-1.9.2.custom/development-bundle/themes/base/jquery.ui.all.css"><script type="text/javascript" src="/jquery-ui-1.9.2.custom/js/jquery-1.8.3.js"></script><script type="text/javascript" src="/jquery-ui-1.9.2.custom/js/jquery-ui-1.9.2.custom.min.js"></script><script>$(document).on("submit","form", function(evt){ evt.preventDefault() ; // stop the form submitting// alert($(this).attr("action") + " " + $(this).serialize() )//Find the forms wrapper get the form's action submit it & load the responce into the forms wrapper $(this).closest(".FormWrap").load($(this).attr("action") + "?" + $(this).serialize() )})</script><style type="text/css">body {font-family:Arial;font-size:12px;background:#ededed;}#PageWrap{width: 1000px;margin: auto;}</style></head> <body> <div id="PageWrap"> <header><img src="/images/Banner.jpg" > </header> <div class="FormWrap"> <fieldset> <legend>My Form <legend> <form id="MyFrm_1"class="form" action="SubmitForm.php" method="post"> <label for="user_1" >Name</label><input id="user_1" type="text" name="user"value ="Holly"> <label for="age_1" >Age</label><input type="text" id="age_1" name="age" value ="23"> <input type="submit" name="submit" value="submit" /> </form> </fieldset> </div> </div></body></html>
The $.ajax() call is a jQuery function. When you select elements using jQuery Ex $('form') what you are doing is calling a jQuery function $() and passing it a string or object that is used to find the element or elements you are wanting to target. jQuery finds those elements and wraps them in a jQuery object making the jQuery library accessible on the return from that function.
From that object to get to an attribute one needs to use the .attr() method. To get the action attribute using jQuery we would have to do this
But ... in the event handler this refers to the DOM Node - not a jQuery wrapped DOM Node - so you have access to all the default methods and properties you would in normal JavaScript. In normal JavaScript you can get the action as a property on the form element - so it makes no sense to go wrapping the this in a jQuery object to get access to the action attribute when it is natively available on the this in the event handler.
EDIT
In the second this
Using, jQuery.ajax(), you can make it POST
Open in new window