javascript – 重复使用代码而不提交表单两次
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 重复使用代码而不提交表单两次,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4291字,纯文字阅读大概需要7分钟。
内容图文
![javascript – 重复使用代码而不提交表单两次](/upload/InfoBanner/zyjiaocheng/757/c58bd43ba3df4000aac8995bb7a73989.jpg)
这就是我的网站中实现删除帐户功能.
如果用户要求删除其帐户(删除完整数据需要3天)并尝试在此3天内登录.
我们需要确认您是否已启用登录帐户
为此,我使用以下代码
$('#loginform').on('submit',function(e) {
var t = $(this);
$.post('/login.php', t.serialize(), function(data) {
if(data.error.length) {
$('.login_result', t).html(data.result).slideDown();
} else if(data.result == 'waiting_for_deletion') {
jconfirm('Account will be enabled if you login',
function(is_confirmed) {
if(is_confirmed) {
$('input:hidden[name="loginform"]').val('confirm_reactivation');
('#loginform').submit();
}
} ,
'Yes', 'Cancel');
} else {
location.href = '/accounts';
}
}, 'json')
});
如果用户输入正确的详细信息(电子邮件和密码)将询问确认,如果他确认我正在重新提交具有新输入字段值的表单
我只是想知道如何在不提交表单两次的情况下重用我的PHP代码?
或者我可以在第一个ajax中再使用一个ajax调用(我认为不可能).
它也不应该影响正常登录
//已编辑
这是我的PHP代码
的login.php
if(isset($_POST['loginform'])) {
$email = trim(mb_strtolower($_POST['email']));
$password = $_POST['upw'];
if (empty($email)) {
$error['#email'] = 'Wrong mail';
}
validate('password', $password, $error['#password']);
// check for correct password now
if(!$error) {
$data = query_execute("SELECT * FROM users WHERE email='".sqlescape($email)."' LIMIT 1");
if(!$data) {
$error['#email'] = 'Account not exists';
} elseif(!$data['active'] && !(int)$data['validated']) {
$error['error'] = 'Account not validated';
} elseif(!$data['password'] || !check_password($password, $data['password'], $data['userid'])) {
$error['#password'] = 'Wrong password';
// ----------------------------------------------
// OK, ALL FINE! USER COULD LOGIN
// ----------------------------------------------
} else {
$confirmation = $_POST['loginform'] == 'confirm_reactivation' ? true : false;
$Delete_Accounts = query_execute("SELECT * FROM deleteacoount WHERE email='".sqlescape($email)."' LIMIT 1");
// Waiting for Deletion accounts
if ($Delete_Accounts[$data['userid']] == 2 && !$confirmation) {
$result = 'waiting_for_deletion';
} else {
if($confirmation) {
query_execute("DELETE FROM deleteacoount WHERE email='".sqlescape($email)."'");
}
DB_query("UPDATE users SET last_login=NOW(),
last_ip='".$_POST['ip']."'
WHERE userid=".$userid."",'#');
$result = 'OK';
}
}
// ----------------------------------------------
}
if($error) {
$result = '<div class="alert alert-block alert-error mb5"><h4>'.$error.'</div>';
}
jsonReturn($result, $error);
}
解决方法:
在这里,我使用一个额外的ajax调用并重用现有代码来创建另一个PHP文件来解决此问题,而无需提交表单两次.
脚本
$(".password").on('focus', function () {
var email=$('input[name="email"]').val();
confirm_reactivation(email);
});
function confirm_reactivation(email)
{
var api="email="+ email;
$.ajax({
method : 'POST',
url : confirm_reactivation.php,
data : api
}).done(function(data){
var out = $.parseJSON(JSON.stringify(data));
if(out.message == 'success'){
$('input:hidden[name="loginform"]').val('confirm_reactivation');
}else{
$('input:hidden[name="loginform"]').val('');
}
});
}
$('#loginform').on('submit',function(e) {
var check_value=$('input:hidden[name="loginform"]').val();
if(check_value !='' || check_value == null)
{
var t = $(this);
$.post('/login.php', t.serialize(), function(data) {
if(data.error.length) {
$('.login_result', t).html(data.result).slideDown();
} else {
location.href = '/accounts';
}
}, 'json')
}
else{
jconfirm('Account will be enabled if you login',
function(is_confirmed) {
if(is_confirmed) {
$('input:hidden[name="loginform"]').val('confirm_reactivation');
//('#loginform').submit();
var t = $(this);
$.post('/login.php', t.serialize(), function(data) {
if(data.error.length) {
$('.login_result', t).html(data.result).slideDown();
} else {
location.href = '/accounts';
}
}, 'json')
}
} ,
'Yes', 'Cancel');
}
});
这是你的新PHP文件,我重用了你的代码并添加了一些东西.
//confirm_reactivation.php
<?php
$email = trim(mb_strtolower($_POST['email']));
$Delete_Accounts = query_execute("SELECT * FROM deleteacoount WHERE email='".sqlescape($email)."' LIMIT 1");
// Waiting for Deletion accounts
if ($Delete_Accounts[$data['userid']] == 2) {
$message = array("message" =>'success',"status" =>200);
echo json_encode($message);exit;
}
else{
$message = array("message" =>'failed',"status" =>200);
echo json_encode($message);exit;
}
?>
而已.谢谢!
内容总结
以上是互联网集市为您收集整理的javascript – 重复使用代码而不提交表单两次全部内容,希望文章能够帮你解决javascript – 重复使用代码而不提交表单两次所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。