douyi6922 2014-08-26 13:59
浏览 86
已采纳

如何在插入数据成功时重置表单? (阿贾克斯)

I have a form. I am processing the form through ajax

Below php file is called through ajax and it validates data. If there are errors, they are displayed. If not data is inserted into the database. Success result is also displayed

if (!empty($errors)) {
    echo "<div class='alert alert-danger'>"
    foreach($errors as $error) {
        echo "<p>".$error."</p>";
    }
    echo "</div>";

} else {
    //no errors     
    $result = $database - > create("customer", $data);
    if ($result) {
        echo "<div class='alert alert-success'>"
        echo "<p>New customer created successfully</p>";
        echo "</div>";
    }
}

Everything works as I expected, but I want to make an enhancement. I need to clear the form only when success result is displayed.

If there are errors I do not want to reset the form.

I can check whether output string is equal to the whole success message and if yes reset the form, but I am looking for some solution which does not depend on the output string.

$(function () {
    $("#create-form").submit(function (e) {
        e.preventDefault();
        $.ajax({
            method: "POST",
            context: this,
            url: "create_process.php",
            data: $(this).serialize(),
            success: function (data) {
                $("#update").html(data);
                $('#create-form').trigger("reset");
                //How to check whether output data is either
                //an error or a success and call above reset function
            }
        });
    });
});
  • 写回答

3条回答 默认 最新

  • doumu5934 2014-08-26 14:09
    关注

    Return a JSON from your php...

    $res['html'] = "";
    $res['status'] = "";
    if (!empty($errors)) {
        $res['html'] .= "<div class='alert alert-danger'>";
        foreach($errors as $error) {
            $res['html'] .= "<p>".$error."</p>";
        }
        $res['html'] .= "</div>";
        $res['status'] = "error";
    } else {
        //no errors     
        $result = $database - > create("customer", $data);
        if ($result) {
            $res['html'] .= "<div class='alert alert-success'>";
            $res['html'] .= "<p>New customer created successfully</p>";
            $res['html'] .= "</div>";
        }
        $res['status'] = "success";
    }
    
    echo json_encode($res);
    

    In your jquery:

     $.ajax({
        method:"POST",
        context:this,
        dataType: "json",
        url:"create_process.php",
        data:$(this).serialize(),
        success:function(data){                      
            $("#update").html(data.html);           
            if (data.status == "success") {
                $('#create-form').trigger("reset");
            }
    
        }                  
    
    });
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 openwrt双栈NAT
  • ¥15 部分网页页面无法显示!
  • ¥15 怎样解决power bi 中设置管理聚合,详细信息表和详细信息列显示灰色,而不能选择相应的内容呢?
  • ¥15 QTOF MSE数据分析
  • ¥15 平板录音机录音问题解决
  • ¥15 请问维特智能的安卓APP在手机上存储传感器数据后,如何找到它的存储路径?
  • ¥15 (SQL语句|查询结果翻了4倍)
  • ¥15 Odoo17操作下面代码的模块时出现没有'读取'来访问
  • ¥50 .net core 并发调用接口问题
  • ¥15 网上各种方法试过了,pip还是无法使用