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 网络科学导论,网络控制
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)