Ajax消息被跳过到不在必需div元素上的url页面



我有以下文件。。。它有两个表单登录和注册(还没有发布表单部分(表单分别对auth.php和signup.php执行操作,并通过user.php进行验证,登录时一切都能完美工作。然而,当我用name和image注册用户时,成功消息会出现在URL页面上,而不是模态页脚div上我想更新页脚DOM中的消息,它是div模态页脚。我在script.js中使用了两个不同的函数,一个函数的数据值为$.form.serialize,它处理登录部分,Formdata处理注册部分。。。。请指导更新模式页脚div上的成功消息……谢谢。

script.js

$(function(){

$('.form').on('submit', function(e){
e.preventDefault();
$form = $(this);

submitForm($form);       


}); 
$('.register').on('submit', function(e){
e.preventDefault();
$reg = $('.register');
registerForm($reg);        

});     
});

function submitForm($form){
$footer = $form.parent('.modal-body').next('.modal-footer');

$footer.html('<img src="public/images/ajax-loader.gif">');

$.ajax({
url: $form.attr('action'),
method: $form.attr('method'),        
data: $form.serialize(),

success: function(response){
response = $.parseJSON(response);

if(response.success){                   
if(!response.signout){
setTimeout(function(){
$footer.html( response.message );
window.location = response.url;
},5000);
}
$footer.html( response.message );


}
else if(response.error){
$footer.html( response.message );
}
console.log(response);
}
});
}
function registerForm($form){
$footer = $form.parent('.modal-body').next('.modal-footer');  
$footer.html('<img src="public/images/ajax-loader.gif">');
var data = new FormData(this.form);

$.ajax({
url: $form.attr('action'),
method: $form.attr('method'), 
data: data,
processData: false,
contentType: false,
success: function(response){
response = $.parseJSON(response);
if(response.success){                  
if(!response.signout){
setTimeout(function(){
$footer.html( response.message );
window.location = response.url;
},5000);
}
$footer.html( response.message );
}
else if(response.error){
$footer.html( response.message );
}
console.log(response)
}
});
}

auth.php

<?php
require_once 'includes/init.php';

$status = $user->login($_POST, $db);
if( $status === 'success'){
echo json_encode([
'success'=> 'success', 
'message'=> '<p class="alert alert-success">Authenticated successfully!</p>',
'url' => 'profile.php',
]);
}
else if( $status === 'missing_fields'){
echo json_encode([
'error'=> 'error', 
'message'=> '<p class="alert alert-danger">All fields mandatory!</p>',
]);
}
else if( $status === 'error'){
echo json_encode([
'error'=> 'error', 
'message'=> '<p class="alert alert-danger">Incorrect email or password!</p>'
]);
}

注册.php

<?php
require_once 'includes/init.php';

$status = $user->signup($_POST, $db);
if( $status === 'success'){
echo json_encode([
'success'=> 'success', 
'message'=> '<p class="alert alert-success">You are signed up successfully!</p>',
//'url' => 'index.php',
'signout' => 1,

]);
}else if( $status === 'missing_fields'){
echo json_encode([
'error'=> 'error', 
'message'=> '<p class="alert alert-danger">All fields mandatory!</p>',

]);
}else if( $status === 'invalid format'){
echo json_encode([
'error'=> 'error', 
'message'=> '<p class="alert alert-danger">Only jpg,jpeg,pngfiles allowed!</p>',

]);
}else if( $status === 'error'){
echo json_encode([
'error'=> 'error', 
'message'=> '<p class="alert alert-danger">Failed to sign you up!</p>'
]);
}

>

user.php

class User{

public function login($user, $db){
if(empty($user['email']) OR empty($user['password'])){
return 'missing_fields';
}
$sql = "SELECT * FROM `users` WHERE `email`=?";
$statement = $db->prepare($sql);

if( is_object($statement) ){
$statement->bindParam(1, $user['email'], PDO::PARAM_STR);
$statement->execute();
if($row = $statement->fetch(PDO::FETCH_OBJ)){ // you the database and verify if the password and email match or not

if(password_verify($user['password'], $row->password)){

$_SESSION['logged_in'] = [
'id'    =>  $row->id,
'name'  =>  $row->name,
]; 
return 'success';
}               
}
}
return 'error';
}

public function signup($user, $db){

if(empty($user['name'])){
return 'missing_fields';
}else{  

if(isset($_FILES['image'])){     
$imgfile=$_FILES["image"]["name"];
$imgnewfile = $imgfile;
move_uploaded_file($_FILES["image"]["tmp_name"],"public/images/".$imgnewfile);
$sql = "INSERT INTO `users`(`name`,`profile_image`) VALUES(?,?)";
$statement = $db->prepare($sql);
if(is_object($statement)){

$statement->bindParam(1, $user['name'], PDO::PARAM_STR);

$statement->bindParam(2, $imgnewfile, PDO::PARAM_STR);

$statement->execute();
if($statement->rowCount()){
return 'success';
}
}       }        
}

return 'error';
}
}   

您应该检查此部件

if(response.success){                   
if(!response.signout){
setTimeout(function(){
$footer.html( response.message );
window.location = response.url;
},5000);
}
$footer.html( response.message );

如果注销为false,则window.location将重定向到响应url。您正在从php返回1。我不知道你为什么也在php文件中注释掉了index.php。这是您希望用户访问的登录页吗?首先,使用console.log或alert检查响应的内容。

最新更新