在javascript codeigniter php中使用ajax成功函数获取数据时,如何禁用页面重新加载?

在javascript codeigniter php中使用ajax成功函数获取数据时,如何禁用页面重新加载?,javascript,php,jquery,ajax,codeigniter,Javascript,Php,Jquery,Ajax,Codeigniter,我有一张注册表,想检查注册用户是否会再次尝试注册,以显示一个警报窗口已使用ajax功能注册 我使用了codeigniter框架 我的功能正常工作,但当弹出警报并按ok时,页面被重新加载。我想禁用 我的表格代码: <form class="modal-content" name="form2" action="<?= $this->config->base_url();?>home/register_user" method="post" onSubmit="retu

我有一张注册表,想检查注册用户是否会再次尝试注册,以显示一个警报窗口已使用ajax功能注册

我使用了codeigniter框架

我的功能正常工作,但当弹出警报并按ok时,页面被重新加载。我想禁用

我的表格代码:

<form class="modal-content" name="form2" action="<?= $this->config->base_url();?>home/register_user" method="post" onSubmit="return ValidateRegister()">
                                              <div class="modal-header">
                          <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                            <span aria-hidden="true">×</span>
                          </button>
                          <h4 class="modal-title">Create your account</h4>
                        </div>
                       <div class="page-content vertical-align-middle" style="display:block;">
      <div class="form-group has-error">
                    <label class="control-label" for="inputTokenfieldError-tokenfield"> <?php echo validation_errors();  ?></label>

                  </div>
        <div class="form-group form-material floating">
          <input type="text" class="form-control " id="inputName" name="username" value="<?php echo set_value('username'); ?>" autocomplete="off">
          <label class="floating-label">Username</label>
        </div>
        <div class="form-group form-material floating">
          <input type="email" class="form-control " id="my_email" name="email" value="<?php echo set_value('email'); ?>" autocomplete="off">
        <label class="floating-label">Email</label>
        </div>
        <div class="form-group form-material floating">
          <input type="password" class="form-control " id="inputPassword" name="password" autocomplete="off">
          <label class="floating-label">Password</label>
        </div>

 <div class="form-group">
        <button type="submit" class="btn btn-primary btn-block">Join Now - It's Free</button>
 </div>

      </form>

只需在submit按钮中添加一个id,比如说
#submitbutton

并使用
jQuery
.prop()
方法设置按钮的禁用属性

$("#submitbutton").prop("disabled", true);
IMP:只有在ajax
success
上保持相同的页面时,这才有效,但如果正在重新加载该页面,则需要在
php
侧检查该表单是否已在此当前
$\u会话中提交

因此,在您的
php
ajax处理程序中,您可以执行如下检查

session_start();
if(!empty($_POST) && empty($_SESSION['post'])) {
    $_SESSION['post'] = true;
    ... do your code
    unset($_SESSION['post']);
}else{
// send the json encoded error message 
}

html
表单上,只需添加一个名为
post
hidden
input
,并将
value
设置为
1
或任何您认为合适的值,因此表单提交后,
post
键将设置在
$\u会话
超全局数组中,如果同一个用户提交了两次相同的表单,那么php不会接受它。

您在annon中返回true/false。功能,即成功处理程序。但是父函数没有返回true/false

按如下方式修改代码:

function checkRegistrations() 
        {
            var email = $('#my_email').val();
            var isValid = true;
            $.ajax({
                url: "<?= base_url() ?>home/checkRegistration",
                async: false,
                type: "POST",
                data: "email="+email,
                dataType: "html",
                success: function(data) {
                    if(data==1)
                    {
                    alert('Email already registered');
                    isValid = false;
                    }
                }
            });
           return isValid;
        }
功能检查注册()
{
var email=$(“#我的电子邮件”).val();
var isValid=true;
$.ajax({
url:“主页/检查注册”,
async:false,
类型:“POST”,
数据:“email=”+email,
数据类型:“html”,
成功:功能(数据){
如果(数据==1)
{
警报(“电子邮件已注册”);
isValid=false;
}
}
});
返回有效;
}
您想禁用我的表单代码是什么意思?
function checkRegistrations() 
        {
            var email = $('#my_email').val();
            var isValid = true;
            $.ajax({
                url: "<?= base_url() ?>home/checkRegistration",
                async: false,
                type: "POST",
                data: "email="+email,
                dataType: "html",
                success: function(data) {
                    if(data==1)
                    {
                    alert('Email already registered');
                    isValid = false;
                    }
                }
            });
           return isValid;
        }