I am trying to create a form that uses ajax to submit. I created a insert_email.php script which looks like this:
<?php require_once('Connections/connect.php'); ?>
<?php
mysql_select_db($database_connUser);
$sql=\"INSERT INTO mail_list (id,email) VALUES('','$_POST[email]')\";
if (!mysql_query($sql,$connUser)) { die('Error: ' . mysql_error()); } echo \"1 record added\";
?>
And I have my page which is a text box that asked for the e-mail address, which looks like this:
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"> <html xmlns=\"http://www.w3.org/1999/xhtml\"> <head> <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /> <title>Mail List Test</title>
<script type=\"text/javascript\" src=\"jquery/jquery-1.2.6.min.js\"></script> <script type=\"text/javascript\" src=\"jquery/jquery.form.js\"></script> <script type=\"text/javascript\"> // prepare the form when the DOM is ready $(document).ready(function() { var options = { target: '#output2', // target element(s) to be updated with server response beforeSubmit: showRequest, // pre-submit callback success: showResponse,// post-submit callback url: 'insert_email.php'
// other available options: //url: url // override for form's 'action' attribute //type: type // 'get' or 'post', override for form's 'method' attribute //dataType: null // 'xml', 'script', or 'json' (expected server response type) //clearForm: true // clear all form fields after successful submit //resetForm: true // reset the form after successful submit
// $.ajax options can be used here too, for example: //timeout: 3000 };
// bind to the form's submit event $('#emailform').submit(function() { // inside event callbacks 'this' is the DOM element so we first // wrap it in a jQuery object and then invoke ajaxSubmit $(this).ajaxSubmit(options);
// !!! Important !!! // always return false to prevent standard browser submit and page navigation return false; }); });
// pre-submit callback function showRequest(formData, jqForm, options) { // formData is an array; here we use $.param to convert it to a string to display it // but the form plugin does this for you automatically when it submits the data var queryString = $.param(formData);
// jqForm is a jQuery object encapsulating the form element. To access the // DOM element for the form do this: // var formElement = jqForm[0];
alert('About to submit: \n\n' + queryString);
// here we could return false to prevent the form from being submitted; // returning anything other than false will allow the form submit to continue return true; }
// post-submit callback function showResponse(responseText, statusText) { // for normal html responses, the first argument to the success callback // is the XMLHttpRequest object's responseText property
// if the ajaxSubmit method was passed an Options Object with the dataType // property set to 'xml' then the first argument to the success callback // is the XMLHttpRequest object's responseXML property
// if the ajaxSubmit method was passed an Options Object with the dataType // property set to 'json' then the first argument to the success callback // is the json data object returned by the server
alert('status: ' + statusText + '\n\nresponseText: \n' + responseText + '\n\nThe output div should have already been updated with the responseText.'); } </script> </head>
When I click submit I get the beforeSubmit alert but I never get the success callback response. However, the address does get insereted into the database but no update to div #output2. Note: I have tried locally and on the server.
<?php require_once('Connections/connect.php'); ?>
<?php
mysql_select_db($database_connUser);
$sql=\"INSERT INTO mail_list (id,email)
VALUES('','$_POST[email]')\";
if (!mysql_query($sql,$connUser))
{
die('Error: ' . mysql_error());
}
echo \"1 record added\";
?>
And I have my page which is a text box that asked for the e-mail address, which looks like this:
When I click submit I get the beforeSubmit alert but I never get the success callback response. However, the address does get insereted into the database but no update to div #output2. Note: I have tried locally and on the server.
It can be all be found right here.