Ajax post not posting email address ?

Posted by jeitjet on Stack Overflow See other posts from Stack Overflow or by jeitjet
Published on 2011-06-17T19:38:04Z Indexed on 2011/06/22 0:22 UTC
Read the original article Hit count: 200

Filed under:
|
|
|

UPDATE: It will not work in Firefox, but will work on any other browser. I even tried loading Firefox in safe mode (disabling all plugins, etc.) and still no worky. :(

I'm trying to do an AJAX post (on form submission) to a separate PHP file, which works fine without trying to send an email address through the post. I'm fairly new to AJAX and pretty familiar with PHP. Here's my form and ajax call

<form class="form" method="POST" name="settingsNotificationsForm">
                        <div class="clearfix">
                            <label>Email <em>*</em><small>A valid email address</small></label><input type="email" required="required" name="email" id="email" />
                        </div>
                        <div class="clearfix">
                            <label>Email Notification<small>...when a new subscriber joins</small></label><input type="checkbox" name="subscribe_notifications" id="subscribe_notifications"> Receive an email notification with phone number when someone  new subscribes to 'BIZDEMO'
                        </div>
                        <div class="clearfix">
                            <label>Email Notification<small>...when a subscriber cancels</small></label><input type="checkbox" name="unsubscribe_notifications" id="unsubscribe_notifications"> Receive an email notification with phone number when someone  new unsubscribes to 'BIZDEMO'
                        </div>
                        <div class="action clearfix top-margin">
                            <button class="button button-gray" type="submit" id="notifications_submit"><span class="accept"></span>Save</button>
                        </div>
                        </form>

and AJAX call:

<script type="text/javascript">
    jQuery(document).ready(function () {

        $("#notifications_submit").click(function() {


                var keyword_value = '<?php echo $keyword; ?>';
                var email_address = $("input#email").val();
                var subscribe_notifications_value = $("input#subscribe_notifications").attr('checked');
                var unsubscribe_notifications_value = $("input#unsubscribe_notifications").attr('checked'); 

                var data_values = { 
                    keyword : keyword_value,
                    email : email_address,
                    subscribe_notifications : subscribe_notifications_value,
                    unsubscribe_notifications : unsubscribe_notifications_value
                };


                $.ajax({
                    type: "POST",
                    url: "../includes/ajax/update_settings.php", 
                    data: data_values,
                    success: alert('Settings updated successfully!'),
                });
         });
    });

and receiving page:

<?php
include_once ("../db/db_connect.php");

$keyword = FILTER_INPUT(INPUT_POST, 'keyword' ,FILTER_SANITIZE_STRING);
$email = FILTER_INPUT(INPUT_POST, 'email' ,FILTER_SANITIZE_EMAIL);
$subscribe_notifications = FILTER_INPUT(INPUT_POST, 'subscribe_notifications' ,FILTER_SANITIZE_STRING);
$unsubscribe_notifications = FILTER_INPUT(INPUT_POST, 'unsubscribe_notifications' ,FILTER_SANITIZE_STRING);


$table = 'keyword_options';
$data_values = array('email' => $email, 'sub_notify' => $subscribe_notifications, 'unsub_notify' => $unsubscribe_notifications);

foreach ($data_values as $name=>$value)
{

// See if keyword is already in database table
$filter = array('keyword' => $keyword);
$result = $db->find($table, $filter);

if (count($result) > 0 && $new != true)
{
    $where = array('keyword' => $keyword, 'keyword_meta' => $name);
    $data = array('keyword_value' => $value);
    $db->update($table, $where, $data); 
}
else
{
    $data = array('keyword' => $keyword, 'keyword_meta' => $name, 'keyword_value' => $value);
    $db->create($table, $data);
    $new = true; // If this is a new record, always go to else statement
}

}

unset($value);

Here are some weird things that happen:

  • When I only enter text into the email field, (i.e. - abc), it works fine, posts correctly, etc.
  • When I enter a bogus email address with the "." before the "@", it works fine
  • When I enter a validated email address (with the "." after the "@"), the post fails.

Ideas?

© Stack Overflow or respective owner

Related posts about php

Related posts about AJAX