Функция успеха в ajax не работает

Переменная total должна быть увеличена (total++) после успешного выполнения функции ajax и вставки имени в базу данных. Но когда запись вставлена, сумма ++ не работает, предупреждение («имя успешно вставлено» не отображается, и каждый раз, когда я вставляю новое имя, общее количество равно 1 вместо увеличения. Надеюсь, вы можете мне помочь.

HTML

<form  action="" method="post">
          <div class="form-item">
            <input id="name" type="text"  name="name">
          </div>
    </form>

Это скрипт jquery/ajax

 <script>    
        $(document).ready(function(){ 
             var total = 1;                
            $('#name').keydown(function(e) {
                if (e.keyCode == 13) {
                      var name= $("#name").val();                        
                       var dataString = 'idUser='+ idUser
                        + '&total=' + total
                        + '&name=' + name

                      $.ajax({
                        type: "POST",
                        url: 'insertName.php',
                        data: dataString,
                         success: function() { 
                           alert("name successfully inserted") 
                           total++;
                         }   
                      }); 
                }
            });
        });
    </script>
This is the insertName.php file
<?php

if(isset($_POST['idUser'])) $idUser= ($_POST['idUser']); 
if(isset($_POST['total'])) $total=($_POST['total']);
if(isset($_POST['name'])) $name= utf8_decode($_POST['name']);

$name=mysql_escape_string($name);


$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}


// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

$sql = "INSERT INTO names(idUser, date, total, name)
VALUES ('$idUser', CURDATE(), '$total', '$nom')";

if (mysqli_query($conn, $sql)) {

} else {
    echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}

mysqli_close($conn);

?>

person fredericmarcel    schedule 19.03.2016    source источник
comment
ну как не работает? Вы уверены, что обратный вызов успеха действительно вызывается? Используйте свою консоль, добавьте операторы консоли, добавьте обработчик ошибок в вызов Ajax.   -  person epascarello    schedule 19.03.2016


Ответы (2)


tota++;

Вам не хватает буквы "л" в конце.

person Obversity    schedule 19.03.2016

Это не работает, потому что переменная total не является глобальной по своей природе, поскольку она объявлена ​​​​внутри DOM ready.

Чтобы заставить его работать, объявите total вне DOM готовым.

 var total; 
 $(document).ready(function(){ 
     total = 1;
     //your operation goes here.
     success: function() { 
              alert("name successfully inserted") 
              total++;
     }   
 });
person Navoneel Talukdar    schedule 19.03.2016