I am doing validation in this script but it does not work, and there are no errors, I can’t understand why ...

jQuery(function($) { $('#singin_sector').on('submit', function(event) { //вешаем на форму событие сабмит if ( validateForm() ) { // если есть ошибки возвращает true event.preventDefault(); // отменяем событие по умолчанию return false; // прерываем выполнение скрипта } $.ajax({ url: "../system/forms.php", type: "POST", data: {login: $("#signin-email").val(), password: $("#signin-password").val()}, //Указываем что формат будет json dataType: 'json', //При успешном ответе принимаем значение json success: function(data){ //Если данные есть, то... if(data){ alert(data); //пытаемся заменить $that тем что получили $('#submit_singin_sector').after("<span>"+data+"</span>"); } } }); }); function validateForm() { $(".text-error").remove(); //удаляем этот элемент с когда страницы var el_e = $("#signin-email"); var el_p1 = $("#signin-password"); // Проверка e-mail var reg = /^\w+([\.-]?\w+)*@(((([a-z0-9]{2,})|([a-z0-9][-][a-z0-9]+))[\.][a-z0-9])|([a-z0-9]+[-]?))+[a-z0-9]+\.([az]{2}|(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum))$/i; var v_email = el_e.val()?false:true; //если поле пустое тогда ответ true иначе false if ( v_email ) { //Cразу после выбранных элементов будет добавлен content, который может быть задан html, объектом jQuery, DOM-объектом el_e.after('<span class="text-error for-email">Поле e-mail обязательно к заполнению</span>'); } else if ( !reg.test( el_e.val() ) ) { v_email = true; el_e.after('<span class="text-error for-email">Вы указали недопустимый e-mail</span>'); } // Проверка паролей if ( el_p1.val().length < 8 ) { var v_pass1 = true; el_p1.after('<span class="text-error for-pass1">Пароль должен быть не менее 8 символов</span>'); } return ( v_email || v_pass1 ); } }); 

script validation is processed successfully, only the ajax request from the server does not work ...

 if (isset($_POST['enter'])) { return json_encode("Ваш логин: ".$_POST['email'].", пароль: ".$_POST['pass']); } 
  • you don’t need to return , but echo ..... well, you don’t enter in POST, just login and password ..... plus send the login key and then try to output via the email key -> $_POST['email'] , similarly with the password - Alexey Shimansky
  • I changed the dataType to html and data to $ ('# singin_sector'). Seriliaze (), the answer began to appear but after rebooting, i.e. A new page opens and displays the answer. - privetsh
  • In its handler $('#singin_sector').on('submit', function(event) { before the last closing }); write: return false; - and you will be happy. - Stanislav
  • Your choice did not help - privetsh
  • and the error returns undefined I don’t know from what and how to fix it - privetsh

1 answer 1

thanks figured it out! so ... java ...

 jQuery(function($) { $('#singin_sector').on('submit', function(event) { //вешаем на форму событие сабмит if ( validateForm() ) { // если есть ошибки возвращает true event.preventDefault(); // отменяем событие по умолчанию return false; // прерываем выполнение скрипта } var m_method=$(this).attr('method'); //получаем адрес скрипта на сервере, куда нужно отправить форму var m_action=$(this).attr('action'); //получаем данные, введенные пользователем в формате input1=value1&input2=value2..., //то есть в стандартном формате передачи данных формы var m_data=$(this).serialize(); $.ajax({ type: m_method, url: m_action, data: m_data, //При успешном ответе принимаем значение json success: function(data){ //document.getElementById('server_respons').text("Ответ от сервера: "+data); //Если данные есть, то... if(data){ //пытаемся заменить $that тем что получили $('#server_respons').html("Ответ от сервера: "+data); } }, error: function(xhr, textStatus, errorThrown){ $('#server_respons').html('Возникла ошибка: ' + xhr.responseCode + ', status: ' + textStatus + ', errorThrown: ' + errorThrown); } }); return false; }); function validateForm() { $(".text-error").remove(); //удаляем этот элемент с когда страницы var el_e = $("#signin-email"); var el_p1 = $("#signin-password"); // Проверка e-mail var reg = /^\w+([\.-]?\w+)*@(((([a-z0-9]{2,})|([a-z0-9][-][a-z0-9]+))[\.][a-z0-9])|([a-z0-9]+[-]?))+[a-z0-9]+\.([az]{2}|(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum))$/i; var v_email = el_e.val()?false:true; //если поле пустое тогда ответ true иначе false if ( v_email ) { //Cразу после выбранных элементов будет добавлен content, который может быть задан html, объектом jQuery, DOM-объектом el_e.after('<span class="text-error for-email">Поле e-mail обязательно к заполнению</span>'); } else if ( !reg.test( el_e.val() ) ) { v_email = true; el_e.after('<span class="text-error for-email">Вы указали недопустимый e-mail</span>'); } // Проверка паролей if ( el_p1.val().length < 8 ) { var v_pass1 = true; el_p1.after('<span class="text-error for-pass1">Пароль должен быть не менее 8 символов</span>'); } return ( v_email || v_pass1 ); } return false; }); 

php ...

 if (isset($_POST['enter'])) { if ($_POST['email'] == "") { echo"Enter email!"; } elseif ($_POST['pass'] == "") { echo "Enter pass!"; } else { echo "Login: ".$_POST['email'].", pass: ".$_POST['pass']; } } 

the script is working and the result is there. BUT! I have another question now ... when the php code checks for if (isset ($ _ POST ['enter'])) {... then the php code does not work through ajax because $ _POST ['enter'] is not transmitted, If you remove this check, then everything works out. Now the question is if the user disables javascript in the browser and does not do an if (isset ($ _ POST ['enter'])) check {... then the form will not be processed, how can this be corrected ????