2017-07-15 100 views
0

時,我的PHP代碼工作正常,直到我決定使用jquery作爲我的註冊頁面來處理和檢查字段,它在那裏工作沒有錯誤,正確地提交給服務器,所以代碼PHP和jquery都沒有問題,但是頭文件(「location:../****.php」)在我提交後不再發送給另一個頁面,而是它將新頁面加載到舊頁面上而不刷新。 這是我的註冊頁面jQuery代碼:當我使用event.preventDefault()提交

<script> 
$(document).ready(function() { 
    $("#myForm").submit(function(event){ 
     event.preventDefault(); 
     var username = $("#signup-username").val(); 
     var pwd = $("#signup-pwd").val(); 
    $(".form-message").load("includes/user-signup.inc.php",{ 
     username: username, 
     pwd: pwd 
    }); 
    }); 
    }); 
</script> 

,這是我的PHP代碼在我的網頁包括:

<?php 
if (isset($_POST['submit'])){ 
include_once 'dbh.inc.php'; 
$username= mysqli_real_escape_string($conn, $_POST['username']); 
$pwd = mysqli_real_escape_string($conn, $_POST['pwd']); 
$errorEmpty = $errorValid = false; 
if(empty($username)|| empty($pwd)){ 
    echo "Fill in all Fields!"; 
    $errorEmpty = true; 
} 
else{ 
     $stmt = $conn->prepare("SELECT * FROM users WHERE username=?"); 
     $stmt->bind_param("s", $uid); 
     $uid = $username; 
     $stmt->execute(); 
     $result = $stmt->get_result(); 
     $usernamecheck = mysqli_num_rows($result); // check if the results 
     $rowNum = $result->num_rows; 
     if($rowNum > 0){ 
      echo "Username is taken!"; 
      $errorValid = true; 
} 
else{ 
    $hashedPwd = password_hash($pwd, PASSWORD_DEFAULT); 
    $stmt = $conn->prepare("INSERT INTO users (username, pwd) VALUES (?, ?)"); 
    $stmt->bind_param("ss",$uid, $password); 
    $uid = $username; 
    $password = $hashedPwd; 
    $stmt->execute(); 
    $result = $stmt->get_result(); 
    header("location: ../user-login.php"); 
} 
} 
}else{ 
header("location: ../user-signup.php"); 
exit(); 
} 
?> 
<script> 
$("#signup-username, #signup-pwd").removeClass("input-error"); 
    var errorEmpty = "<?php echo $errorEmpty; ?>"; 
    var errorValid = "<?php echo $errorValid; ?>"; 
if (errorEmpty == true $$ errorValid == true){ 
    $("#signup-username, #signup-pwd").addClass("input-error"); 
if (errorFEmpty == false && errorValid == false){ 
$("#signup-username, #signup-pwd,").val(""); 
    } 
</script> 

我該如何解決這個問題?

+0

請詳細填寫代碼,爲了安全起見,您可以更改變量名稱。你的代碼幾乎不正確,其中有星號。 –

+0

@PreciousTom在這裏你去 –

回答

0
$(".form-message").load("includes/user-signup.inc.php",{ 
    username: username, 
    pwd: pwd 
}); 

當上面的代碼到達header(「Location:file.php」); 它會讀取該文件到$(".form-message") 爲了避免這種情況,你可以使用Ajax數據發佈和JavaScript重定向內置

$.ajax({ 
    type: "POST", 
    url: "includes/user-signup.inc.php", 
    data: "username="+ username +"&pwd="+ pwd, 
    success: function(data) { 
    window.location.href = "../****.php"; 
    } 
}); 

希望這個答案是有幫助的。

+0

data:「username =」+ username +「&pwd =」+ pwd, 這寫的是否正確? –

+0

是的。 @NizarWakour –

+0

它不適用於我,我沒有得到這部分 數據:「username =」+ username +「&pwd =」+ pwd, 爲什麼它是「username =」和「&pwd =」?我有更多的變量什麼樣的模式,所以我可以添加它們,因爲我沒有在這裏得到這種模式。 並且成功:function(data){0} {0} {0}} window.location.href =「../.php」; 表示數據是否成功轉到我想要的頁面?如果是,以什麼方式成功?在數據成功添加到數據庫之前,我不希望頁面刷新。 如果有另一種更好的方式來驗證我的表單使用Java我想使用它。 –

0

您的代碼的運行方式與其應該完全相同。

$(document).ready(function() { 
    $("#myForm").submit(function(event){ 
     // THIS LINE RIGHT HERE 
     event.preventDefault(); 
     ****************** 
     $(".form-message").load("includes/user-signup.inc.php",{ 
     ****************** 
     }); 
    }); 
    }); 

事件阻止默認停止重定向操作。此外您然後使用jquery到文件的內容加載到DOM元素與類:

.form-message 

刪除event.preventDefault();

+0

@PreciousAniefiok這不是我的代碼。我只是從OP – InfinityCounter

+0

@PreciousAniefiok複製它我不是OP,我發佈了一個答案。去更多的問他 – InfinityCounter

+0

我明白了,但我可以修正它,但不刪除event.preventDefault();? –

相關問題