【问题标题】:Ajax avoid reload the pageAjax 避免重新加载页面
【发布时间】:2019-07-18 13:10:50
【问题描述】:

我试图对后端的 ajax 进行验证,并发送数据并正常工作,但是当数据从后端返回时出现问题,因为它正在重新加载页面并删除返回的消息

    <script>

    $(document).ready(function() {
  // Cache selectors to make them a bit shorter and more performant
    $pwd_error = $('#password_result_error').hide();
  $pwd_blank = $('#current_password_blank').hide();

  $('#new_password').focus(function(event) {
    data = $('#current_password').val();
    var len = data.length;
    if (len < 1) {
      //alert("Password cannot be blank");
      $pwd_blank.show();

    } else {
      $pwd_blank.hide();
    }

    $('#change_password').click(function() {

    if ($('#new_password').val() != $('#confirm_new_password').val()) {
       $pwd_error.show();
    } else {

      $pwd_error.hide();


    }
  });
});
  // Attach listener globally (and only once)
  $('form#form_change_password').submit(function(e) {
    if ($pwd_blank.is(':visible') || $pwd_error.is(':visible')) {
      e.preventDefault();

    } else {
        var change_password = $("#form_change_password").serialize();
                 $.post(
                        "backend/ajax/update_password.php",
                        change_password
                 ).done(function(data) {

                        $("#change_password_result").html(data);


                 }).fail(function () {
                          //alert("Error submitting forms!");
                 })

    }
  });
});

     </script>

     <hr>
     <div class="container text-center">
     <h1><?php $lang ['change_password']; ?></h1>
      <form id="form_change_password">
     <div class="form-group">
   <!--  <label for="current_password"><?php echo $lang 'current_password']; ?> </label> -->
    <input type="password" class="form-control" id="current_password" name="current_password" placeholder="<?php echo $lang ['current_password']; ?>">
    </div>
    <div id="current_password_blank" class="alert-danger"><i  class="fa fa-exclamation-circle"></i>&nbsp;<?php echo $lang ['current_password_can_not_be_blank']; ?></div>
     <div class="form-group">
    <label for="new_password"><?php echo $lang ['new_password']; ?></label>
    <input type="password" class="form-control" id="new_password" name="new_password" placeholder="<?php echo $lang ['new_password']; ?>">
    </div>
    <div class="form-group">
    <label for="confirm_new_password"><?php echo $lang ['confirm_new_password']; ?></label>
     <input type="password" class="form-control" id="confirm_new_password" name="confirm_new_password" placeholder="<?php echo $lang ['confirm_new_password']; ?>">
    </div>
    <div id="password_result_error" class="alert-danger"><i  class="fa fa-exclamation-circle"></i>&nbsp;<?php echo $lang ['password_do_not_match']; ?></div>
    <div id="change_password_result"></div>
    <div class="text-center">
  <button type="submit" id="change_password" class="btn btn-success"><?php echo $lang ['change_password']; ?></button>
  </div></form>
    </div>

我试图阻止提交时重新加载,但它不通过 ajax 发送数据,此代码现在工作正常,但我需要防止提交时重新加载,但也不影响其上的 ajax。 如何防止页面在提交时重新加载,而不影响发送到后端的ajax数据?

【问题讨论】:

标签: javascript jquery ajax ajaxform


【解决方案1】:
$('form#form_change_password').submit(function (e) {
    e.preventDefault();
    if ($pwd_blank.is(':visible') || $pwd_error.is(':visible')) {
        // Don't call the api if form has error
        return
    }
    var change_password = $("#form_change_password").serialize();
    $.post(
        "backend/ajax/update_password.php",
        change_password
    ).done(function (data) {
        $("#change_password_result").html(data);
    }).fail(function () {
        //alert("Error submitting forms!");
    })
});

【讨论】:

  • 请贴出完整的代码,让我看看效果如何。
  • 这是您需要的代码。唯一的变化是调用 e.preventDefault();在 if 语句之外
  • 将您当前的$('form#form_change_password').submit(function (e) {} 替换为上述的。其他一切都保持不变。
  • 当我实现它时,它使$pwd_blank$pdw_error 可见,不知道我的sintax 是错误的还是其他的
猜你喜欢
  • 1970-01-01
  • 2018-01-06
  • 1970-01-01
  • 1970-01-01
  • 2013-03-13
  • 2014-04-30
  • 2013-02-10
  • 2021-12-15
  • 2019-08-18
相关资源
最近更新 更多