Ошибка при работе с Ajax

171
25 марта 2018, 22:06

Что нужно:

  1. JS отправляет информацию в переменной login на php
  2. PHP проверяет, зарегистрирован ли логин (из переменной login) и если нет - отправляет на js true, если да - false
  3. JS принимает информацию и делает проверку: если передано значение true - выполняет один код, если false - другой.

Что происходит: Ничего. Либо php не отправляет ответ, либо js не принимает.

Код:

JS:

var xhr = new XMLHttpRequest;
xhr.open("POST", "check.php", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send(login);
xhr.onreadystatechange = function (){
  if(xhr.readyState == 4){
    if(xhr.responseText == "true"){
      var div = document.querySelector("#login");
      div.className = "true";
      div.innerHTML = "✓Логин не занят";
      alogin = null;
      alogin = true;
    }else if(xhr.responseText == "false"){
      var div = document.querySelector("#login");
      div.className = "false";
      div.innerHTML = "Логин занят!";
      alogin = null;
      alogin = false;
    }
  }
}

check.php:

<?php
include("db.php");
if(isset($_POST["login"]){
    $login = $_POST['login'];
    if($login == ''){
        unset($login);
    }
    $login = stripslashes($login);
    $login = htmlspecialchars($login);
    $login = trim($login);
    $result = mysql_query("SELECT id FROM accounts WHERE login='$login'", $db);
    $myray = mysql_fecth_array($result);
    if(!empty($myray['id'])){
        echo 'false';
    }else{
        echo 'true';
    }
}
?>

db.php:

<?php
$db = mysql_connect("194.67.202.210", "testsite", "не скажу");
mysql_select_db("LHVideo", $db);
?>
Answer 1

HTML

<input id='login' onchange='check();'>
<div id='hint'></div> 

JS

function check() {
    var xhr = new XMLHttpRequest;
    xhr.open("POST", "ttt9.php", true);
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xhr.send(login);
    xhr.onreadystatechange = function (){
        if(xhr.readyState == 4){
            var div = document.getElementById("hint");
            if(xhr.responseText == "true"){
                div.className = "true";
                div.innerHTML = "?Логин не занят";
                alogin = null;
                alogin = true;
            }else if(xhr.responseText == "false"){
                div.className = "false";
                div.innerHTML = "Логин занят!";
                alogin = null;
                alogin = false;
            }
        }
    }
}
READ ALSO
Логика работы с корзиной

Логика работы с корзиной

Учусь делать корзину на PHP (раньше делал на JS), подскажите по логике действий) Сейчас по клику на Заказать я добавляю в coockie через JS ID товара,...

161
Запись в cooke при клике на ссылку(кнопку) JS

Запись в cooke при клике на ссылку(кнопку) JS

Добавляет модальное окно в куки, тем самым показывает один раз, пока куки не удален из хранилища, а php проверяет если есть куки то не показывать...

158
Составить алгоритм выдачи ролей в игре Мафия на PHP

Составить алгоритм выдачи ролей в игре Мафия на PHP

Здравствуйте! Помогите составить алгоритм, чтобы на входе было только количество игроков от 10 до 30, а не выходе показывало количество всех...

141
Метод для слияния 2-ух List&#39;ов С++

Метод для слияния 2-ух List'ов С++

Необходимо написать метод для отсортированного слияния List A и List BПример: List A 10 20 30 40 List B 15 25 35 Результат List C 10 15 20 25 30 35 40

205