当数据在javascript codeigniter php中使用ajax成功功能时,如何禁用页面重新加载?
Posted
技术标签:
【中文标题】当数据在javascript codeigniter php中使用ajax成功功能时,如何禁用页面重新加载?【英文标题】:how can page reload disabled when data get using ajax success function in javascript codeigniter php? 【发布时间】:2016-05-04 09:29:39 【问题描述】:我有一个注册表单,并想检查注册用户是否会尝试再次注册以使用 ajax 功能显示警告窗口已注册。
我用过codeigniter框架。
我的功能正常工作,但是当弹出警报并按确定页面重新加载时。我想禁用
我的表单代码:
<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>
我的javascript函数:
function checkRegistrations()
var email = $('#my_email').val();
$.ajax(
url: "<?= base_url() ?>home/checkRegistration",
async: false,
type: "POST",
data: "email="+email,
dataType: "html",
success: function(data)
// alert(data);
if(data==1)
//event.preventDefault();
alert('Email already registered');
return false;
window.location.reload(false);
else
return true;
)
【问题讨论】:
想禁用我的表单代码是什么意思? 【参考方案1】:只需在提交按钮上添加一个 ID,例如 #submitbutton
。
并使用jQuery
的.prop()
方法设置按钮的禁用属性。
$("#submitbutton").prop("disabled", true);
IMP:这仅在您在 ajax success
上保持相同页面时才有效,但如果您要重新加载该页面,则需要检查它php
方当前$_SESSION
是否已提交此表单。
因此,在您的 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
或任何您认为合适的名称,所以一旦提交表单,@ 987654336@ 键将设置在$_SESSION
SuperGlobal Array 中,如果 same 用户两次提交相同的表单,则 php 不会接受它。
【讨论】:
【参考方案2】:您正在从 annon 内部返回 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;
【讨论】:
以上是关于当数据在javascript codeigniter php中使用ajax成功功能时,如何禁用页面重新加载?的主要内容,如果未能解决你的问题,请参考以下文章
在 Codeigniter 中使用 javascript 多字段的动态选择框
构建数据库、codeigniter 模型和 javascript 调用以优化速度和效率
使用 javascript (codeigniter) 以动态形式将 PHP 导入数据库