0

ajax と php を使用してフォームを作成しました。フォームへの初期ロードと値の入力はすべて正常に機能していますが、エラーが発生するのは、送信ボタンが押された後です。フォームのマークアップと、ajax および php ハンドラーを次に示します。

フォームの関連部分:

<form id="edit_time">

 <!-----form fields here----!>


<button class="saveRecurrence" type="button" onclick="editTimeDriver('.$_GET['driver_id'].')">Save</button>

ajax部分:

function editTimeDriver(driver_id) {
var time = "";
if (driver_id)
{
time += "&driver_id="+driver_id;
}

var data = $("#edit_time").serialize();

$.ajax({
    url: "ajax.php?action=save_driver_event"+time,
    dataType: "json",
    type: "post",
    data: data,
    beforeSend: function()
    {

        $(".error, .success, .notice").remove();

    },
    success: function(json)
    {
        if (json["status"]=="success")
    {
        alert(json["message"]);

        $("#edit_time")[0].reset();

    }else{

        if(json["error"]["date_from"]){
        $("input[name=date_from]").after("<div class="error">"+json_time["error"]["date_from"]+"</div>");
        }

    }       
    }

});

}

これは、次の php 部分に渡されます。

$json = array();


 if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {

$date_from = tep_db_prepare_input($_POST['date_from']);


if (preg_match("/^([0-9]{4})-([0-9]{2})-([0-9]{2})$/", $date_from)) {

$json['error']['date_from'] = 'Start Date is not valid!';
}



if (isset($json['error']) and !empty($json['error'])){

    $json['status'] = 'error';

    $json['message'] = 'Please check your error(s)!';

}else{

    $json['status'] = 'success';

    $json['message'] = 'Time Data has been successfully updated!';

}
}

echo json_encode($json);

何らかの理由で、date_fromフィールドが空白のままでフォームが送信された場合、エラー メッセージが返されず、代わりに成功メッセージが返されます。エラーを読み取らない理由を誰かに教えてもらえますか?

4

1 に答える 1