在javascript codeigniter php中使用ajax成功函数获取数据时,如何禁用页面重新加载?
我有一张注册表,想检查注册用户是否会再次尝试注册,以显示一个警报窗口已使用ajax功能注册 我使用了codeigniter框架 我的功能正常工作,但当弹出警报并按ok时,页面被重新加载。我想禁用 我的表格代码:在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
<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:只有在ajaxsuccess
上保持相同的页面时,这才有效,但如果正在重新加载该页面,则需要在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;
}