ОБНОВЛЕНИЕ: Это не будет работать в Firefox, но будет работать на любом другом браузере.Я даже пытался загрузить Firefox в безопасном режиме (отключив все плагины и т. Д.), Но все еще не работал.: (
Я пытаюсь сделать запись AJAX (при отправке формы) в отдельный файл PHP, который прекрасно работает, не пытаясь отправить адрес электронной почты через сообщение. Я довольно новичок в AJAX идовольно хорошо знаком с PHP. Вот моя форма и вызов ajax
<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>
и вызов AJAX:
<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!'),
});
});
});
и получение страницы:
<?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);
Вот некоторые странные вещи, которые случаются:
- Когда я только вводю текст в поле электронной почты (то есть - abc), он работает нормально, отправляет сообщения и т. Д.
- Когда я вписываю поддельный адрес электронной почты с "." Перед "@", он отлично работает
- Когда я ввожу проверенный адрес электронной почты (с "." После "@"), сообщение не будет выполнено.
Идеи?