Intereting Posts
Изменение базы данных: пользователи, голосовавшие Как получить сообщения в блоге на главной странице? Хотите установить post_meta данные о загрузке изображений в портфолио Загрузите сообщение с другим шаблоном? JS-скрипт не включен Каталог для хранения защищенного файла Скрыть контейнер изображений, если нет прикрепленных изображений Мобильные пользователи перенаправлены на другую страницу при входе в систему, если не связаны с другим сообщением Как получить сообщения, опубликованные в последний день? Как использовать этот сценарий jquery на сайте wordpress? Отображение содержимого с одного сайта WP на отдельном сайте WP Обновление WP 3.1 обновляет тему AutoFocus + Разрешить пользователям изменять изменения и добавлять таксономии сообщений Безопасно ли запустить wp-cron.php дважды, если первый экземпляр занимает слишком много времени? Восстановление пароля на странице

Выпуск контактной формы AJAX

Я создал контактную форму для моей боковой панели, которая отлично работает в Chrome, но не в IE или FF.

Я смотрел на него часами и не мог узнать, что я сделал не так.

Я ничего не получаю в любом месте, но когда я отправляю его в FF или IE, он регистрирует «nope» в моей консоли и выдает сообщение -1 в #jvmsg.

Мой html:

<li id="jvcontactwidget-3" class="widget widget_contact"> <div class="title"><h2>Test</h2></div> <form id="jvcontact" name="widget_contact" action="" method="post"> <label class="required" for="email">Email Address (required)</label> <input class="required" type="email" name="email"> <label class="required" for="firstName">First Name (required)</label> <input class="required" type="text" name="firstName"> <label class="required" for="lastName">Last Name (required)</label> <input class="required" type="text" name="lastName"> <label for="question">Any questions for us?</label> <textarea rows="5" name="question"></textarea> <input type="submit" value="Send it" style="display: inline-block; "> </form> <div class="jvloading" style="display: none; "></div> <div id="jvsuccess" style="display: none;" >Thanks for the email</div> <div id="jvmsg" style="display: none; "></div> </li> 

Мой файл js выглядит так:

 jQuery(document).ready(function($) { jQuery('#jvcontact').submit(function() { jQuery('.widget_contact input[type="submit"]').hide(); jQuery('.jvloading').show(); var str = jQuery(this).serialize(); jQuery.ajax({ type: 'POST', url: '/wp-admin/admin-ajax.php', data: 'action=contact_form&'+str, success: function(msg) { //jQuery('#jvmsg').ajaxComplete(function(event, request, settings){ if(msg === 'sent') { console.log('sent'); jQuery('#jvmsg').hide(); jQuery('.jvloading').slideUp(); jQuery('.widget_contact input[type="submit"]').slideUp(); jQuery('#jvcontact').slideUp(); jQuery('#jvsuccess').fadeIn('slow'); } else { console.log('nope'); jQuery('#jvmsg').html(msg); jQuery('.jvloading').hide(); jQuery('.widget_contact input[type="submit"]').show(); jQuery('#jvmsg').fadeIn('slow'); } //}); } }); return false; }); 

});

Мой php-файл:

 function ajax_contact() { if(!empty($_POST)) { $error = ""; //Check to make sure sure that a valid email address is submitted if(trim($_POST['email']) == '') { $error .= "An email address is required<br/>"; } else if (!eregi("^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[AZ]{2,4}$", trim($_POST['email']))) { $error .= "A valid email address is required<br/>"; } else { $email = trim($_POST['email']); } //Check to make sure that the first name field is not empty if(trim($_POST['firstName']) == '') { $error .= "Your first name is required<br/>"; } else { $firstName = trim($_POST['firstName']); } //Check to make sure that the last name field is not empty if(trim($_POST['lastName']) == '') { $error .= "Your last name is required<br/>"; } else { $lastName = trim($_POST['lastName']); } if(trim($_POST['question']) == '') { $question = "They had no questions at this time"; } else { $question = $_POST['question']; } $admin_mail = get_bloginfo('admin_email'); if(empty($error)) { $message = "Someone wants to get in touch with you. \n\n Name: " . $firstName . " " . $lastName . "\n Email: " . $email . "\n Question: " . $question . "\n"; $jvMail = wp_mail($admin_mail, 'Contact from your website', $message); echo "sent"; } else { echo $error; } die(); } } add_action('wp_ajax_contact_form', 'ajax_contact'); 

Спасибо за помощь!

вы вошли в систему со всеми браузерами? поскольку

add_action('wp_ajax_contact_form', 'ajax_contact');

работает только для зарегистрированных пользователей, поэтому для его исправления вам необходимо изменить его:

add_action('wp_ajax_nopriv_contact_form', 'ajax_contact');

если вы хотите, чтобы ваша функция работала как для посетителей, так и для пользователей.