【问题标题】:Show and hide forms with ajax and javascript使用 ajax 和 javascript 显示和隐藏表单
【发布时间】:2017-03-14 10:48:25
【问题描述】:

我正在尝试通过 ajax 在数据库中插入值。有从数据库进入while循环的行。我在每行中添加了一列,其中包含按钮。单击按钮时,我正在提交数据库中的值,它工作正常。删除查询也可以正常工作。

我想在成功提交时隐藏选择表单并显示取消表单。

当插入查询失败时想显示错误。

然后点击取消按钮删除查询成功后显示选择表单。

需要帮助。提前致谢

PHP 代码:

While循环代码:

if($num_rowsslctcncl)
{
    $slctcncldis="<form name='cancel_selection' class='cancel_selection' action=''>
    <input type='hidden' name='crs' class='user_id' value='$coursename'>
    <input type='hidden' name='insertid' class='insertid' value='$insertid'>

    <button class='btn btn-cancel btn-xs' value='Cancel'>Cancel</button>
    </form>";
}

if(!$num_rowsslctcncl)
{
    $slctcncldis="<form name='form_submit_change_status' class='form_submit_change_status' action=''>
    <input type='hidden' name='crs' class='user_id' value='$coursename'>
    <input type='hidden' name='insertid' class='insertid' value='$insertid'>

    <button class='btn btn-warning btn-xs' value='Select Course'>Select Course</button>
    </form>";
}

echo"<tbody><tr>
<td>$crs</td>
<td>$slctcncldis </td>    

Ajax 和 javascript 代码:

插入功能代码:

<script>
$(function(){
    $('.btn.btn-warning').click(function(e) {
        e.preventDefault();
        var $form = $(this).closest(".form_submit_change_status");
        var formData =  $form.serializeArray();
        var userId =  $form.find(".user_id").val();
        var URL = "response.php";

        $.post(URL, formData).done(function(data) {
        });

        fail(function(jqXHR, textStatus, errorThrown) {
           alert(errorThrown);  
        });
    });
});
</script>

删除功能码:

<script>
$(function(){
    $('.btn.btn-cancel').click(function(e) {
        e.preventDefault();
        var $form = $(this).closest(".cancel_selection");
        var formData =  $form.serializeArray();
        var userId =  $form.find(".user_id").val();

        var URL = "cancelselection.php";
        $.post(URL, formData)
        .done(function(data) {
        });

        fail(function(jqXHR, textStatus, errorThrown) {
        });
    });
});
</script>

响应.php

插入查询代码:

<?php
include_once("db.php");

    $crs = $_POST["crs"];
    $sid = $_POST["insertid"]; 

    $strscheck="SELECT * FROM add_delete_record where sid='$sid'";
    $resultscheck=mysql_query($strscheck) or die(mysql_error());

    $num_rowscheck = mysql_num_rows($resultscheck);

    if($num_rowscheck < 3)
    {
        $strsreg="insert into add_delete_record  (sno, chcourse, sid) values('', '$crs','$sid')";
        $resultsreg=mysql_query($strsreg) or die(mysql_error());
    }
    else
    {
    }
?>

【问题讨论】:

  • 我的问题没有得到任何答案。我问错问题了吗?
  • 问题是没有人愿意阅读这么多的代码。尝试发布相关代码并保持简短,以解释您的问题是什么。
  • 但是当我给出短代码时,每个人都要求提供完整代码。你能帮我解决这个问题吗?坚持了这么多小时
  • @Test 在下面添加了答案。这有帮助吗?

标签: javascript php html ajax


【解决方案1】:

您需要循环打印这两个表单。不要插入选定的表单,而是最初显示和隐藏表单。尝试这样的事情。将其与您的代码进行比较,您会发现不同之处。

if($num_rowsslctcncl)
{
    $slctcncldis_Cancel ="<form name='cancel_selection' class='cancel_selection' style="display:block;" action=''>
            <input type='hidden' name='crs' class='user_id' value='$coursename'>
            <input type='hidden' name='insertid' class='insertid' value='$insertid'>
            <button class='btn btn-cancel btn-xs' value='Cancel'>Cancel</button>
        </form>";

} else {
    $slctcncldis_Cancel ="<form name='cancel_selection' class='cancel_selection' style="display:none;" action=''>
            <input type='hidden' name='crs' class='user_id' value='$coursename'>
            <input type='hidden' name='insertid' class='insertid' value='$insertid'>
            <button class='btn btn-cancel btn-xs' value='Cancel'>Cancel</button>
        </form>";
}

if(!$num_rowsslctcncl)
{

    $slctcncldis_Submit ="<form name='form_submit_change_status' class='form_submit_change_status' style="display:block;" action=''>
            <input type='hidden' name='crs' class='user_id' value='$coursename'>
            <input type='hidden' name='insertid' class='insertid' value='$insertid'>
            <button class='btn btn-warning btn-xs' value='Select Course'>Select Course</button>
            </form>";

} else {
    $slctcncldis_Submit ="<form name='form_submit_change_status' class='form_submit_change_status' style="display:none;" action=''>
            <input type='hidden' name='crs' class='user_id' value='$coursename'>
            <input type='hidden' name='insertid' class='insertid' value='$insertid'>
            <button class='btn btn-warning btn-xs' value='Select Course'>Select Course</button>
            </form>";

}

echo"<tbody><tr>
<td>$crs</td>
<td>$slctcncldis_Cancel.$slctcncldis_Submit</td>    


    Ajax and javascript Code :

Insert Function Code :

    <script>
$(function(){
    $('.btn.btn-warning').click(function(e) {
        e.preventDefault();
        var $form = $(this).closest(".form_submit_change_status");

    var $cancel_form = $form.siblings(".cancel_selection");

        var formData =  $form.serializeArray();
        var userId =  $form.find(".user_id").val();


        var URL = "response.php";
        $.post(URL, formData).done(function(data) {
        $form.hide();
        $cancel_form.show();
        });

        fail(function(jqXHR, textStatus, errorThrown) {
           alert(errorThrown);  
        });


    });
});

</script>

【讨论】:

  • Kuldeep 它在一定程度上有所帮助。但最初它显示了两种形式。我不想这样做,因为它允许再次选择选定的项目。我们可以通过response.php完成插入查询成功时的工作然后隐藏选择表单并显示取消表单
  • 它不应该显示两种形式,检查 style="display:none;"和风格=“显示:块;”对于我的回答中的两种形式。您应该在打印表单之前应用这些样式。
  • Kuldeep 是的,它现在工作正常。非常感谢你。需要从 response.php 中再做一件事 if($num_rowscheck > 3) 我想显示一些 msg
  • 有一个问题,如果插入查询不成功,按钮仍然从选择更改为取消
  • 你需要修改你的 "$.post(URL, formData).done(function(data) {}" 函数。读取来自服务器的'data',如果它包含错误则不显示/隐藏表单。如果“数据”包含成功消息,则显示/隐藏表单
猜你喜欢
  • 1970-01-01
  • 2013-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多