23
Авг
2016

Отправка и обновление данных на странице несколько раз через ajax

Есть форма регистрации она в целом работает, вот только если пользователь исправляет свою ошибку и делает новую то там, где исправил ошибку она появиться снова, ну и новая, соответственно. Проблема в том, что старую он исправил, думаю проблема в ajax в этой строке

$("#error").text($("#error").text() + " + " + data[i]);

Думаю массив надо как–то обнулить при каждом нажатии, как это сделать я не знаю, помогите, пожалуйста.

введите сюда описание изображения

<?php

header('Content-Type: application/json; charset=utf-8');
mysql_connect("localhost", "", "");
mysql_select_db("");
if(!empty($_POST['button'])) { 
  $err = array(); 
  # проверям логин 
  if(!preg_match("/^[a-zA-Z0-9]+$/",$_POST['login'])){ 
    $err[] = "Логин может состоять только из букв английского алфавита и цифр"; 
  } 
  if(strlen($_POST['login']) < 3 or strlen($_POST['login']) > 30){ 
    $err[] = "Логин должен быть не меньше 3-х символов и не больше 30"; 
  } 
  if(strlen($_POST['password']) < 3 or strlen($_POST['password']) > 30){ 
    $err[] = "пароль должен быть не меньше 3-х символов и не больше 30"; 
  } 
  if ($_POST['password'] !== $_POST['rpassword']){ 
    $err[] = "пароли не совпадают"; 
  } 
  if(!isset($_POST['email'])){ 
    $err[] = "емаил не передан"; 
  } 
  if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){ 
    $err[] = "Заполните коректно поле емаил"; 
  } 
  # проверяем, не сущестует ли пользователя с таким именем 
  $query = mysql_query("SELECT COUNT(id) FROM users WHERE login='".mysql_real_escape_string($_POST['login'])."'"); 
  if(mysql_result($query, 0) > 0){ 
    $err[] = "Пользователь с таким логином уже существует в базе данных"; 
  } 
  # Если нет ошибок, то добавляем в БД нового пользователя 
  if(count($err) == 0){ 
    $login = ($_POST['login']); 
    $email = (trim($_POST['email'])); 
    $password = md5(md5(trim($_POST['password']))); 
    $sql = mysql_query("INSERT INTO `users` (`login`, `e-mail`, `paroli`) VALUES ('$login', '$email', '$password')"); 
    if($sql == true) { 
      echo 0; 
    }elseif ($sql == false) { 
      echo 1; 
    } else { 
      echo"ничего не пойму"; 
    } 
  } else if (count($err) > 0){ 
    $err = array(); 
    # проверям логин 
    if(!preg_match("/^[a-zA-Z0-9]+$/",$_POST['login'])){ 
      $err[] = "Логин может состоять только из букв английского алфавита и цифр"; 
    }
    if(strlen($_POST['login']) < 3 or strlen($_POST['login']) > 30){ 
      $err[] = "Логин должен быть не меньше 3-х символов и не больше 30";
    } 
    if(strlen($_POST['password']) < 3 or strlen($_POST['password']) > 30){ 
      $err[] = "пароль должен быть не меньше 3-х символов и не больше 30"; 
    } 
    if ($_POST['password'] !== $_POST['rpassword']){ 
      $err[] = "пароли не совпадают"; 
    } 
    if(!isset($_POST['email'])){ 
      $err[] = "емаил не передан"; 
    } 
    if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){ 
      $err[] = "Заполните коректно поле емаил"; 
    } 
    # проверяем, не сущестует ли пользователя с таким именем 
    $query = mysql_query("SELECT COUNT(id) FROM users WHERE login='".mysql_real_escape_string($_POST['login'])."'"); 
    if(mysql_result($query, 0) > 0){ 
      $err[] = "Пользователь с таким логином уже существует в базе данных"; 
    } 
    echo json_encode($err);  
  }
}
?>

<!DOCTYPE html>

<html>
<head>
<title>Регистрация</title>
<meta http-equiv="Content-Style-Type" content="text/css" charset="utf-8">
<meta name="keywords" content="Ключевые слова для поисковиков">
<meta name="description" content="Описание сайта">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel="stylesheet" type="text/css" href="1/my_room/css/style.css" />
<link rel="stylesheet" type="text/css" href="style.css" />
<link rel="stylesheet" type="text/css" href="1/my_room/css/bootstrap.min.css" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<script src="1/my_room/js/bootstrap.min.js"></script>
<!--<style>
.error, .success{
    display: block;
	position: absolute;
	top:0;
	left:0;
	padding: 7px 5px 7px 5px;
	border-bottom-right-radius: 10px;
	display: none;
}
.error{
    background: red;
    border:1px solid #b23c3c;
}
.success{
	background: #black;
    border: 1px solid #326db5; 
}
</style>-->
</head>
<body>
<script>
$(document).ready(function() {
   $("#clickButtonForm").bind("click", function () {
     $.ajax ({
       url: "ajax.php",
       type: "POST",
       data: {login: $("#login").val(), password: $("#password").val(), rpassword: $("#rpassword").val(), email: $("#email").val(), button: $("#clickButtonForm").val()},
       beforeSend: function (){
 		    $("#information").text ("Expectaton data...")
	   },
       success: function (data){ 
         //debugger;
         //var respons = JSON.parse(data);
         // в случае, когда пришло success. Отработало без ошибок
         if (data === 0){    				   
 $("#error").text("data").removeClass("error").addClass("success").show().delay(8000).fadeOut(3000);
           //   $("#error").text("You success registration").removeClass("error").addClass("success").show().delay(3000).fadeOut(3000);
           // в случа ошибок
         } else if(data == 1){
           $("#error").text("Occured error speak administraor").removeClass("success").addClass("error").show().delay(8000).fadeOut(3000);
         } else {
           for (var i=0; i<data.length; i++) {
             $("#error").text($("#error").text() + " + " + data[i]);
           }
//$("#error").removeClass("success").addClass("error").show().delay(8000).fadeOut(3000);
         }
       }
     });
   });
 });

				
				
</script>

<div class="container">
<div class="row">
<div class="col-xs-12 col-sm-12 col-lg-4">
<div class="panel">
<form role="form" class="formForMe" id="register_form" method="post">
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-user"></span></span>
<input type="text" class="input form-control" id="login" placeholder="Введите Ваш будующий логин для входа" required autofocus />
</div>
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-lock"></span></span>
<input type="password" id="password" class="input form-control" placeholder="Введите Ваш пароль для входа" required />
</div>
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-lock"></span></span>
<input type="password" name="rpassword" id="rpassword" class="form-control" placeholder="Повторите пароль для входа" required />
</div>

<div class="input-group">
<span class="input-group-addon"><span class="add-on">@</span></span>
<input type="text" class="input form-control" id="email" placeholder="Ваш существующий email" required autofocus />
</div>

<div class="row">
<div class="col-xs-6 col-sm-6 col-md-6 col-lg-12">
</div>

<div class="col-xs-6 col-sm-6 col-md-6 col-lg-12">
<button type="button" value="1" class="clickButtonForm btn btn-labeled btn-success" id="clickButtonForm">
<span class="btn-label"><i class="glyphicon glyphicon-ok"></i></span>Регистрация</button>
<button onclick="location.href='../index.html'" type="submit" class="btn btn-labeled btn-danger">
<span class="btn-label"><i class="glyphicon glyphicon-remove"></i></span>Назад</button>
</div>
</div>
<p>
<a href="#">Забыли свой пароль?</a></p>
</form>
</div>
</div>
</div>
</div>
<span id="information" class=""></span>
<b id="error" class="">При регистрации произошли следующие ошибки:</b><br>
</body>
</html>

Источник: https://ru.stackoverflow.com/questions/558475/%D0%9E%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%BA%D0%B0-%D0%B8-%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-%D0%BD%D0%B0-%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B5-%D0%BD%D0%B5%D1%81%D0%BA%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE-%D1%80%D0%B0%D0%B7-%D1%87%D0%B5%D1%80%D0%B5%D0%B7-ajax

Share

Тебе может это понравится...