Jquery AJAX Form Submission/Coldfusion

I have a question about this example:
http://net.tutsplus.com/tutorials/javascript-ajax/submit-a-form-without-page-refresh-using-jquery/

I am using coldfusion and jquery to have someone fill out the form, validate the name and email address and then insert it into my database. However, I would also like to check the database to make sure that I don't get duplicate email addresses.  How would I go about doing that?    

I am using the same code as shown on that website.  The only difference is that I don't have a return phone field.  I only have name and email address.  
LVL 5
trifecta2kAsked:
Who is Participating?

[Webinar] Streamline your web hosting managementRegister Today

x
 
McNeticConnect With a Mentor Commented:
There are at least two ways to accomplish that: First, you could modify the sucess() function to check the result return by the server: The function can be defined as follows:
success(data, textStatus, jqXHR)

Open in new window


Data is the data return by your server, textStatus the status the request returned, and jqXHR is the XMLHttpRequest object used for the request. You can have the server return different values when the email was added and when it already existed, and react accordingly in the sucess() function by checking out the data argument.

The second, and perhaps better way would be to let the server return a http error on duplicate email addresses and change the ajax call to include an error handler (similar to the success handler). Something like this:

$.ajax({  
  type: "POST",  
  url: "bin/process.php",  
  data: dataString,  
  success: function() {  
    $('#contact_form').html("<div id='message'></div>");  
    $('#message').html("<h2>Contact Form Submitted!</h2>")  
    .append("<p>We will be in touch soon.</p>")  
    .hide()  
    .fadeIn(1500, function() {  
      $('#message').append("<img id='checkmark' src='images/check.png' />");  
    },
  error: function() {
    [... your error handling code here ...]
    });  
  }  
});  

Open in new window

0
 
trifecta2kAuthor Commented:
I really like the 2nd option...but what do you mean by have the server return a http error on a duplicate email?  

Currently I am trying to use a simple query to tell if the email address exists:
<cfquery name="check" datasource="lbdb_">
Select * from tbl_member
where member_email = '#url.email#'
</cfquery>

<cfif check.recordCount eq 0>
    query to insert into database and a message to the user
</cfif>

What would I have to do to get your 2nd option to work?  

Thanks for the help.  
0
 
McNeticConnect With a Mentor Commented:
Uh, I'm sorry, I'm not really into coldfusion. It should, however, be possible to make the server return an http error (like the well known error 404 not found) to the browser. Maybe it works like this:

<cfheader statuscode="400" statustext="Bad Request" />
<cfabort />

Open in new window


There are a lot of error codes defined in http, see here: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
0
The new generation of project management tools

With monday.com’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

 
trifecta2kAuthor Commented:
Sorry for the delayed response...my day got cut short yesterday.  

I tried using cfheader and it shows the error when I use firebug, but it doesn't actually fire off the error function I defined.  I've attached a snippet of the code, maybe I'm doing something wrong.

Here is main part of my js file
$.ajax({
      type: "POST",
      url: "addMember.cfm?" + dataString,
      data: dataString,
      success: function(result) {
        $('#contact_form').html(result);
      }
	  error: function() {
		alert('hello'); 
	  }
     });

Open in new window


Here is my coldfusion file

<cfset cDate = dateformat(now(), 'mm/dd/yyyy')>
<cfquery name="check" datasource="lbdb_">
Select * from tbl_member
where member_email = '#url.email#'
</cfquery>

<cfif check.recordCount eq 0>
    <cfquery name="addMember" datasource="lbdb_">
        insert into tbl_member (member_name, member_email, member_date)
        values ('#url.name#', '#url.email#', #createODBCDate(cdate)#)
    </cfquery>
    <div id="message">Thank you for subscribing</div>
<cfelse>
    <cfheader statuscode="400" statustext="Bad Request" />
    <cfabort />
</cfif>

Open in new window

0
 
McNeticConnect With a Mentor Commented:
In the js code you posted, there is a comma missing at the end of the line before
error: function() {

Open in new window

0
 
trifecta2kAuthor Commented:
Thanks for the help.  I got it to work!
0
All Courses

From novice to tech pro — start learning today.