2017-02-23 9 views
1

ajaxで検証とPHPエラー処理を追加する方法を教えてください。これで成功メッセージが正しく出てきますが、エラーメッセージをどのように実装できますか?私はいくつかのPHPの検証を追加する必要があります助けてください。ajaxエラー処理でPHPフォームの検証を追加する方法

私の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)、実際にはクエリを連結する代わりに[Prepared Statements](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)を使用する必要があります。あなたがユーザーの入力をまったくエスケープしていないからです! –

+0

代わりに、 '{success:true/false、errorMessage:" some message "}'のようないくつかのパラメータを使ってjsonオブジェクトを返して、ajax呼び出しの成功コールバックでチェックしてください。 –

+0

このアプリはWeb版用ではありません。オフラインWebアプリ – Firefog

答えて

1

Ajaxはステータス・コードのベースのエラーを識別し、あなたがその500ない限り、PHPコードのエラーを取得する場合でも、あなたのPHPコードは常に、成功であるステータスコード200を返します。アヤックスはレスポンスを成功として扱います。

あなたは、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

関連する問題