За последние 24 часа нас посетили 70366 программистов и 5688 роботов. Сейчас ищут 1226 программистов ...

Обработка формы jquerry. Не проходит ajax запрос.

Тема в разделе "PHP для новичков", создана пользователем Stas09, 7 сен 2022.

  1. Stas09

    Stas09 Новичок

    С нами с:
    7 сен 2022
    Сообщения:
    9
    Симпатии:
    0
    Есть страница авторизации с формой, нужно отправить ajax запрос.
    В devtools хочу проверить отправлен ли ajax.

    login.php:
    PHP:
    1. form action="#" id="start" method="post">
    2.                             <a><?php echo $log6; ?></a>
    3.                             <p><input id="inputLog" type="login" name="login" placeholder="Login" value="<?php echo $login; ?>"/><p>
    4.                             <p><input id="inputPass" type="password" name="password" placeholder="Пароль" value="<?php echo $password; ?>"/></p>
    5.                             <input id="submit" type="submit" name="submit" class="btn1" value="Вход" />
    6.                         </form>
    7.                         <p id="hello">s</p>
    main.js:
    Код (Javascript):
    1. $("#start").submit(function () {
    2.     var params = {
    3.         text: $("#inputLog").val(),
    4.         text2: $("#inputPass").val(),
    5.     }
    6.     $.post("ajax.php", params, function (data) {
    7.         $("#hello").html(data);
    8.     });
    9. });
    ajax.php:
    PHP:
    1. <?php
    2.  
    3. $text = $_POST["text"];
    4. $text2 = $_POST["text2"];
    5. echo 'Привет, '.$text.$text2;
    6. // }
    Спасибо за любые комментарии.
     
  2. lastdays

    lastdays Активный пользователь

    С нами с:
    27 сен 2012
    Сообщения:
    410
    Симпатии:
    74
    PHP:
    1.   if ( $_SERVER['REQUEST_METHOD'] == 'POST' and isset ( $_POST['text'], $_POST['text2'] )  )
    2.   {
    3.  
    4.         $error   = 'Ошибка';
    5.         $success = 'Успех';
    6.  
    7.         $text = 'Привет, '. htmlspecialchars( $_POST['text'] ) . htmlspecialchars( $_POST['text2'] );
    8.  
    9.         exit(
    10.           json_encode(
    11.             [
    12.              'text'    => $text,
    13.              'error'   => $error,
    14.              'success' => $success,
    15.             ]
    16.           )
    17.        );
    18.  
    19.   }
    Код (Javascript):
    1.   $("#hello").html(data['text']);
    или показать ошибку


    dataType: 'JSON', если прям так необходимо, поставь HTML, тогда сработает твой вариант.
     
  3. Stas09

    Stas09 Новичок

    С нами с:
    7 сен 2022
    Сообщения:
    9
    Симпатии:
    0
    Спасибо!
     
  4. Stas09

    Stas09 Новичок

    С нами с:
    7 сен 2022
    Сообщения:
    9
    Симпатии:
    0
    Где нужно указать dataType: 'JSON'?
    Нет реакции на кнопку. (
    <input id="submit" type="button" name="submit" class="btn1" value="Вход" />)
     
  5. Stas09

    Stas09 Новичок

    С нами с:
    7 сен 2022
    Сообщения:
    9
    Симпатии:
    0
    У меня бала реализована авторизация без ajax.

    Нужно отправлять формы с ajax. Проверять, что форма отправилась с использованием ajax.
    Ответ должен быть в формате json. Проверять, соответствие ответа формату json.
    Также нежно проверять невозможность отправки формы с отключенным JS.

    Нужен ли мне ajax.php или main.js нужно отправлять сразу на UserController?
    Запутался..


    UserController.php:
    PHP:
    1. /**
    2.      
    3. <?php
    4.  
    5. /**
    6.  * Контроллер UserController
    7.  */
    8. class UserController
    9. {
    10. * Action для страницы "Вход на сайт"
    11.      */
    12.     public function actionLogin()
    13.     {
    14.         //Переменные для ошибок в форму
    15.         $userError = "";
    16.         $log6 = "";
    17.         $pass6 = "";
    18.         $success = "";
    19.         $user = "";
    20.  
    21.         // Переменные для формы
    22.         $login = false;
    23.         $password = false;
    24.      
    25. // Защита от POST инъекций
    26.                                             $jsxss="onabort,oncanplay,oncanplaythrough,ondurationchange,onemptied,onended,onerror,onloadeddata,onloadedmetadata,onloadstart,onpause,onplay,onplaying,onprogress,onratechange,onseeked,onseeking,onstalled,onsuspend,ontimeupdate,onvolumechange,onwaiting,oncopy,oncut,onpaste,ondrag,ondragend,ondragenter,ondragleave,ondragover,ondragstart,ondrop,onblur,onfocus,onfocusin,onfocusout,onchange,oninput,oninvalid,onreset,onsearch,onselect,onsubmit,onabort,onbeforeunload,onerror,onhashchange,onload,onpageshow,onpagehide,onresize,onscroll,onunload,onkeydown,onkeypress,onkeyup,altKey,ctrlKey,shiftKey,metaKey,key,keyCode,which,charCode,location,onclick,ondblclick,oncontextmenu,onmouseover,onmouseenter,onmouseout,onmouseleave,onmouseup,onmousemove,onwheel,altKey,ctrlKey,shiftKey,metaKey,button,buttons,which,clientX,clientY,detail,relatedTarget,screenX,screenY,deltaX,deltaY,deltaZ,deltaMode,animationstart,animationend,animationiteration,animationName,elapsedTime,propertyName,elapsedTime,transitionend,onerror,onmessage,onopen,ononline,onoffline,onstorage,onshow,ontoggle,onpopstate,ontouchstart,ontouchmove,ontouchend,ontouchcancel,persisted,javascript";
    27.                                             $jsxss = explode(",",$jsxss);
    28.                                             foreach($_POST as $k=>$v)
    29.                                             {
    30.                                                 if(is_array($v))
    31.                                                 {
    32.                                                     foreach($v as $Kk=>$Vv)
    33.                                                     {
    34.                                                         $Vv = preg_replace ( "'<script[^>]*?>.*?</script>'si", "", $Vv );
    35.                                                         $Vv = str_replace($jsxss,"",$Vv);
    36.                                                         $Vv = str_replace (array("*","\\"), "", $Vv );
    37.                                                         $Vv = strip_tags($Vv);
    38.                                                         $Vv = htmlentities($Vv, ENT_QUOTES, "UTF-8");
    39.                                                         $Vv = htmlspecialchars($Vv, ENT_QUOTES);
    40.                                                         $_POST[$k][$Kk] = $Vv;
    41.                                                     }
    42.                                                 }
    43.                                                 ELSE
    44.                                                 {
    45.                                                     //Сначала удаляем любые скрипты для защиты от xss-атак
    46.                                                     $v = preg_replace ( "'<script[^>]*?>.*?</script>'si", "", $v );
    47.                                                     //Вырезаем все известные javascript события для защиты от xss-атак
    48.                                                     $v = str_replace($jsxss,"",$v);
    49.                                                     //Удаляем экранирование для защиты от SQL-инъекций
    50.                                                     $v = str_replace (array("*","\\"), "", $v );
    51.                                                     //Экранируем специальные символы в строках для использования в выражениях SQL
    52.                                                     //$v = mysql_real_escape_string( $v );
    53.                                                     //Удаляем другие лишние теги.  
    54.                                                     $v = strip_tags($v);
    55.                                                     //Преобразуем все возможные символы в соответствующие HTML-сущности
    56.                                                     $v = htmlentities($v, ENT_QUOTES, "UTF-8");
    57.                                                     $v = htmlspecialchars($v, ENT_QUOTES);
    58.                                                     //Перезаписываем GET массив
    59.                                                     $_POST[$k] = $v;
    60.                                                 }
    61.                                              
    62.                                             }
    63.  
    64.     // if (@$_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') {
    65.  
    66.         // Обработка формы
    67.         if (isset($_POST['submit'])) {
    68.             // Если форма отправлена
    69.             // Получаем данные из формы
    70.             $login = $_POST['login'];
    71.             $password = $_POST['password'];
    72.  
    73.             // Флаг ошибок
    74.             $errors = false;
    75.  
    76.             // Валидация полей
    77.             if (!User::checkLogin($login)) {
    78.                 $errors[] = 'Login не должен быть короче 6-ти символов';
    79.                 $log6 = 'Login не должен быть короче 6-ти символов';
    80.             }
    81.          
    82.             // Проверяем зарегистрирован ли пользователь
    83.             $userId = User::checkUserData($login, $password);
    84.  
    85.             if ($userId == false) {
    86.                 // Если данные неправильные - показываем ошибку
    87.                 $errors[] = 'Неправильные данные для входа на сайт';
    88.                 $userError = 'Неправильные данные для входа на сайт';
    89.             } else {
    90.                 $_SESSION['user'] = $login;
    91.                 $success = "Hello ";
    92.                 // // Перенаправляем пользователя в закрытую часть - кабинет
    93.                 header("Location: /cabinet");
    94.            
    95.  
    96.  
    97.             }
    98.         }
    99.  
    100.         // Подключаем вид
    101.         require_once(ROOT . '/views/user/login.php');
    102.         return true;
    103.     // }
    104. }
    105.     }