成功的ajax返回时,模态框不会关闭

时间:2018-05-21 10:26:16

标签: javascript php jquery mysql modal-dialog

每当屏幕理想3分钟时,我会弹出一个模态窗口。它要求输入一个PIN,并在输入PIN后点击该按钮。使用此“继续”按钮时,将在数据库表中进行插入。现在我的问题是输入PIN并点击继续按钮,模式不会隐藏或关闭自己。虽然数据库插入已完成但模态不会隐藏。这可能会出错。任何建议都会非常有帮助。我的代码,

 <div class="modal fade" id="myModal"  role="dialog" data-backdrop="static" data-keyboard="false">

    <div class="modal-dialog">

      <!-- Modal content-->

<form name="frmActive" id="frmActive" action="" method="post">      
      <div class="modal-content" style="height:250px;">
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal">&times;</button>
          <h4 class="modal-title">Ideal Time activation</h4>
        </div>
        <div class="modal-body">
          <p>Please enter activation <b>PIN</b><font color="red">*</font><br>

          <p id="msg" style="color:#F00;"></p>
          <input type="password" name="pin" id="pin" value="" maxlength="4"  onKeyUp="checkNumber(this)"  class="form-control" placeholder="Enter Pin">
          <input type="hidden" id="inactiveTime">
          <p style="font-size:11px"><b><font color="red">*</font><font color="grey"><b>PIN</b><i> is mentioned in your welcome email.</font></i></b></p><br>

        </div>
        <div class="modal-footer">

       <button type="button" id="btnSubmit" name="submit" value="submit" class="btn btn-success"><i class="glyphicon glyphicon-floppy-disk"></i> Continue</button> 
       <input type="hidden" id="module_id" value="<?php echo $moduleId ; ?>">
       <input type="hidden" id="chapter_id" value="<?php echo $chapterId ; ?>">

        </div>
      </div>
</form>      
   </div>
  </div>
jQuery("#btnSubmit").on("click", function(){

    var pin             =   jQuery("#pin").val();
    var chapter_id      =   jQuery("#chapter_id").val();
    var module_id       =   jQuery("#module_id").val();
    var nowDate         =   jQuery.now();
    var inactiveTime    =   jQuery("#inactiveTime").val();
    var seconds         =   (nowDate - inactiveTime) / 1000;

    var formData    =   new FormData();
        formData.append("pin", pin);
        formData.append("seconds", seconds);
        formData.append("module_id", module_id);
        formData.append("chapter_id", chapter_id);

      $.ajax({
        url: "processActivation.php",
        type: "POST",
        data: formData,
        processData: false,
        contentType: false,

        success: function(result){          


           if(result['status'] == 'active')

            {

                jQuery('#myModal').modal('hide');
            }
            else
            {

                $("#msg").html(result) ;

            }

        }
      });

});

并且processActivation.php,

<?php
$uid        =   $_SESSION['session_user_id'];
$dobCheck   =   $db->idToField("tbl_user", "dob", $uid);
$dob        =   explode("-", $dobCheck);

$pin            =   $_REQUEST['pin'];
$moduleId       =   $_REQUEST['module_id'];
$chapterId      =   $_REQUEST['chapter_id'];
$time_taken     =   $_REQUEST['seconds'];
$created        =   date("Y-m-d h:i:s");
if($pin != $dob[0])
{

    echo "Please enter valid PIN."; die;
}
else
{

    $dataactivation =   array("user_id"=>$uid, "module_id"=>$moduleId, "chapter_id"=>$chapterId,"time_taken"=>$time_taken, "created"=>$created);
    $db->query_insert("tbl_activation", $dataactivation);   


  header('Content-Type: application/json', true, 200); 
  echo json_encode(array('status' => 'active')); 
  exit(); 
}

?>  

我想知道是否

header('Content-Type: application/json', true, 200); 
      echo json_encode(array('status' => 'active')); 
      exit();

是正确的方法吗?因为所有上述操作都正确执行,因此console.log(result)没有显示任何内容。上面几行出了点问题。如果有人在此指出错误,那将非常有用。

3 个答案:

答案 0 :(得分:0)

快速修复可能,而不是做 echo json_encode(array('status' => 'active'));if(result['status'] == 'active')

echo "active";if(result == 'active')

答案 1 :(得分:0)

使用jQuery中的hide函数。

jQuery('#myModal').hide();

据我所知,modal('hide')用于引导模态。

答案 2 :(得分:0)

使用

jQuery('#myModal').toggle().click();

而不是

jQuery('#myModal').modal('hide');