2017-02-23 53 views
1

Как добавить проверку и обработку ошибок php с помощью ajax. Теперь сообщение об успешном завершении происходит правильно, но как я могу реализовать сообщение об ошибке? Мне может потребоваться добавить некоторую проверку php, пожалуйста, помогите.Как добавить проверку формы php с обработкой ошибок ajax

Вот мой JS.

$('#edit_user_form').bind('click', function (event) { 
    event.preventDefault();// using this page stop being refreshing 
    $.ajax({ 
    data: $(this).serialize(), 
    type: $(this).attr('method'), 
    url: $(this).attr('action'), 

    success: function() { 
    $(".msg-ok").css("display", "block"); 
    $(".msg-ok-text").html("Profile Updated Successfully!!"); 
    }, 
    error: function() { 
    //Error Message   
    } 
    }); 
}); 

PHP

<?php 
require_once 'db_connect.php'; 
if($_POST) { 
    $fname = $_POST['fname']; 
    $lname = $_POST['lname']; 
    $index_no = $_POST['index_no']; 
    $contact = $_POST['contact']; 

    $id = $_POST['id']; 

    $sql = "UPDATE members SET fname = '$fname', lname = '$lname', index_no = '$index_no', contact = '$contact' WHERE id = {$id}"; 
    if($connect->query($sql) === TRUE) { 
     echo "<p>Succcessfully Updated</p>"; 
    } else { 
     echo "Erorr while updating record : ". $connect->error; 
    } 
    $connect->close(); 
} 
?> 
+0

Вы широко открыты [SQL Инъекции] (http://php.net/manual/en/security.database. sql-injection.php) и должен действительно использовать [Подготовленные утверждения] (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) вместо того, чтобы объединять ваши запросы. Специально, поскольку вы вообще не избегаете пользовательских входов! –

+0

Вместо этого вы должны вернуть объект json с некоторыми параметрами, такими как '{success: true/false, errorMessage:" some message "}' и проверить его в своем обратном вызове успеха для вашего вызова ajax. –

+0

это приложение не для веб-версии его автономное веб-приложение – Firefog

ответ

1

Аякса определяет ошибки на основе кода статуса, ваш PHP код будет всегда возвращать код статуса 200, который является успешным, даже если вы получите сообщение об ошибке в PHP коде, если только его 500 или 404. Таким образом, ajax будет рассматривать ответ как успех.

если вы хотите обрабатывать ошибки PHP, сделайте следующие изменения в коде

<?php 
require_once 'db_connect.php'; 
if($_POST) { 
    $fname = $_POST['fname']; 
    $lname = $_POST['lname']; 
    $index_no = $_POST['index_no']; 
    $contact = $_POST['contact']; 

    $id = $_POST['id']; 

    $sql = "UPDATE members SET fname = '$fname', lname = '$lname', index_no = '$index_no', contact = '$contact' WHERE id = {$id}"; 
    if($connect->query($sql) === TRUE) { 
     echo "true"; 
    } else { 
     echo "false"; 
    } 
    $connect->close(); 
} 
?> 


$('#edit_user_form').bind('click', function (event) { 
    event.preventDefault();// using this page stop being refreshing 
    $.ajax({ 
    data: $(this).serialize(), 
    type: $(this).attr('method'), 
    url: $(this).attr('action'), 

    success: function (res) { 
    if(res == 'true') { 
      //success code 
    } else if(res == 'false') { 
      //error code 
    } 

    }, 
    error: function() { 
    //Error Message   
    } 
    }); 
}); 
+0

Спасибо за ваш ответ. Я реализую этот код – Firefog

+0

. Ваш код работает, но можно ли проверять поля формы. – Firefog

+0

вы можете использовать проверку начальной загрузки для клиентской стороны. – Divyank