Это первый раз, когда я использую ajax для WP. Я работаю над простой формой контакта, и по какой-то причине, когда я нажимаю кнопку «Отправить», я получаю сообщение об ошибке:
на консоли:
POST http://54.xxx.xx.xx/wp-admin/admin-ajax.php 500 (Internal Server Error)jquery.js?ver=1.11.1:4 m.ajaxTransport.sendjquery.js?ver=1.11.1:4 m.extend.ajaxmain.js:66 (anonymous function)jquery.js?ver=1.11.1:3 m.event.dispatchjquery.js?ver=1.11.1:3 m.event.add.r.handle
по хромам «Сети»:
Remote Address:54.xx.xx.xx:80 Request URL:http://54.xx.xx.xx/wp-admin/admin-ajax.php Request Method:POST Status Code:500 Internal Server Error Request Headersview source Accept:*/* Accept-Encoding:gzip, deflate Accept-Language:en-US,en;q=0.8 Connection:keep-alive Content-Length:73 Content-Type:application/x-www-form-urlencoded; charset=UTF-8 Cookie:wp-settings-1=editor%3Dtinymce%26posts_list_mode%3Dlist; wp-settings-time-1=1424359234 Host:54.xx.xx.xx Origin:http://54.xxx.xx.xx Referer:http://54.xxx.xx.xx/?page_id=73 User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36 X-Requested-With:XMLHttpRequest Form Dataview sourceview URL encoded action:submit_contact_form fullname:test email:test@gmail.com text:test Response Headersview source Access-Control-Allow-Credentials:true Access-Control-Allow-Origin:http://54.xxx.xx.xx Cache-Control:no-cache, must-revalidate, max-age=0 Connection:close Content-Length:0 Content-Type:text/html; charset=UTF-8 Date:Thu, 26 Feb 2015 16:10:19 GMT Expires:Wed, 11 Jan 1984 05:00:00 GMT Pragma:no-cache Server:Apache/2.4.7 (Ubuntu) X-Content-Type-Options:nosniff X-Frame-Options:SAMEORIGIN X-Powered-By:PHP/5.5.9-1ubuntu4.5 X-Robots-Tag:noindex
Это моя часть ajax:
//send info to php $.ajax({ beforeSend: function() { if ( IsEmail(email) == false) { $('#aboutUnsuccess').show("slow"); $('.form_content').hide("slow"); } }, url: document.location.protocol+'//'+document.location.host+'/wp-admin/admin-ajax.php', type: "POST", /*action: 'submit_contact_form',*/ data: ({ "action": "submit_contact_form", "fullname": fullname, "email": email, "text": text }), success: function (results){ if ( IsEmail(email) == true) { //hide table $('.form_content').hide('slow', function() { $('.form_content').hide( "slow" ); }); //show textboxes $('#aboutSuccess').show("slow"); $( "#aboutSuccess" ).append( "<iframe id=\"pixel-thing\" src=\"http://54.xxx.xx.xx/wp-content/themes/twentyfifteen-child/thePixel.html\" width=\"1\" height=\"1\" border=\"0\"></iframe>" ); } } }); });
И это моя php fucntion:
// Contact form Ajax add_action('wp_ajax_nopriv_submit_contact_form', 'submit_contact_form'); function submit_contact_form(){ if(isset($_POST['email'])) { $email = $_POST['email']; $email_to = "mail@main.com"; $host = "ssl://smtp.gmail.com:465"; $username = 'mainmain@mail.com'; $password = 'pass'; $email_subject = "You have a new email from $email via asdasd.com website"; $message = $_POST['text']; $headers = array ('From' => $email, 'To' => $email_to,'Subject' => $email_subject); $smtp = Mail::factory('smtp', array ('host' => $host, 'auth' => true, 'username' => $username, 'password' => $password)); $mail = $smtp->send($email_to, $headers, $message); if (PEAR::isError($mail)) { echo($mail->getMessage()); } else { echo("Message successfully sent!\n"); } } }
Может быть, причина ошибки?
Я попробовал var_dump () переменные в файле php functions.php, все они отлично отображаются.
когда я добавляю require_once "Mail.php";
в верхней части моего php-файла страницы просто перестают загружаться. Я не уверен, что это проблема. Поэтому я пытаюсь без него (?)
Ошибка 500 выбрасывается, потому что ваш сервер не отвечает на ваш вызов.
Вы пытались с запуском php-файла.
error_reporting(E_ALL); ini_set("display_errors", 1);
Используйте firebug, чтобы он отправил вам вызов на сервер и ответ, чтобы вы могли видеть ошибку.
Если вы видите пустую страницу, вы пропустили синтаксис где-нибудь в вашем файле PHP. Взгляните в свои скобки, двоеточия и полуколоны