@sunnyrio

Почему запрос ajax jQuery не работает?

Есть форма авторизации, информация веденая в поля должна отправляется для обработки на сервер, для проверки запроса в tmenu помещаются разные сообщения(это я уже для себя сделал), но почему то запрос не проходит, в чем проблема?

Index:
<div id="tmenu" class="ui_tmenu">hi
</div>

	<form id="test" name="login" action="">
		<div class="label"> Логин </div>
		<div class="i_a_i">
			<input name="name" type="text" class="inp_auth">
		</div>		
		<div class="label"> Пароль </div>
		<div class="">
			<input name="pass" type="text" class="inp_auth">
		</div>
		<button class="btn_auth" onclick="authorization();">Войти</button>
			<button class="btn_auth b_a_i">Регистрация</button>
	</form>

authorization:
function authorization()
{
	document.getElementById("tmenu").innerHTML='ok';
	var msg = $('#test').serialize();
 $.ajax({
     url: "logina.php",
     method: "post",
	 data: msg,
	 type: "json",
     success:  function(date) { document.getElementById("tmenu").innerHTML= 'dateeeeeeeeeeeeeeeeee';
          
     },
	 error: function() { document.getElementById("tmenu").innerHTML='err';
          
     }
 });
}


logina.php:
<?php
	require_once 'dy_functions.php';
	$error = $login = $pass = "";
	
	if (isset($_POST['name']))
	{
		$login = sanitizeString($_POST['name']);
		$pass = sanitizeString($_POST['pass']);
		
		if ($login == "" || $pass == "")
		{
			$error = "Данные введены не во все поля";
		}
		else
		{
			$result = queryMysql("SELECT login,pass FROM customer WHERE login='$login' AND pass='$pass'");
			if($result->num_rows == 0)
			{
				$error = "Ошибка при вводе пары имя пользователя - пароль";
			}
			else
			{
				$_SESSION['name'] = $login;
				$_SESSION['pass'] = $pass;
			}
		}
	}


echo json_encode($date);

?>
  • Вопрос задан
  • 622 просмотра
Решения вопроса 1
Так работает. Но есть замечания по коду, но это после.
<div id="tmenu" class="ui_tmenu">hi</div>
        <form id="test" name="login" method="post">
            <div class="label"> Логин </div>
            <div class="i_a_i">
              <input name="name" type="text" class="inp_auth">
            </div>		
            <div class="label"> Пароль </div>
            <div class="">
              <input name="pass" type="text" class="inp_auth">
            </div>
        </form>
        <button class="btn_auth">Войти</button>
        <button class="btn_auth b_a_i">Регистрация</button>

js я использовал больше jquery.
$('.btn_auth').click(function(){
  document.getElementById("tmenu").innerHTML='ok';
  var msg = $('#test').serialize();
 $.ajax({
     url: "logina.php",
     method: "post",
     data: msg,
     dataType:"json",
     success:  function(data) {
         $('#tmenu').text(data.status);
          
     },
   error: function() { document.getElementById("tmenu").innerHTML='err';
          
     }
 });
});

php:
require_once 'dy_functions.php';
  
  if (isset($_POST['name'])){
    $login = sanitizeString($_POST['name']);
    $pass = sanitizeString($_POST['pass']);
    
    if ($login == "" || $pass == ""){
      $error = "Данные введены не во все поля";
    }else{
      $result = queryMysql("SELECT login,pass FROM customer WHERE login='$login' AND pass='$pass'");
      if($result->num_rows == 0){
        $error = "Ошибка при вводе пары имя пользователя - пароль";
      }else{
        $_SESSION['name'] = $login;
        $_SESSION['pass'] = $pass;
        $error = "все прошло успешно";
      }
    }
    $data = array("status" => $error);
    echo json_encode($data);
  }


А теперь замечания. Ставьте фигурные скобки на той же строчке пожалуйста, не нужно их выносить в отдельную строку и вам скажут спасибо. Второе, не используйте стандартный драйвер для работы с базой, используйте PDO. И третье, выносите кнопки за пределы формы, если работаете с ajax.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@sunnyrio Автор вопроса
66f8686b08414f6a8f13fa21fc3c02bc.jpg

Что это мне интересно если я на localhost работаю?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы