我正在使用同一index.php檔案中的 PHP 代碼檢查此表單是否有錯誤:
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="POST">
<?php if(!empty($formErrors)){ ?>
<div id="errors">
<?php
foreach($formErrors as $error)
{ echo '* ' . $error . '.<br/>';}
?>
</div>
<?php } ?>
<input type="text" name="firstname">
<input type="submit" value="send">
</form>
PHP代碼如下:
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$fname = $_POST['firstname'];
$formErrors = array();
if(strlen($fname) < 2 ){
$formErrors[] = "First name must be longer than 1 character";
}
}
?>
到目前為止一切正常,除了我想防止頁面在提交表單時滾動到頂部。因此我使用ajax來解決這個問題:
$("form").submit(function(e){
e.preventDefault();
$.ajax({
type: $(this).attr("method"),
url: $(this).attr("action"),
data: $(this).serialize()
});
});
現在表單錯誤將不再顯示,這不是我想要的。如何在不丟棄 ajax 的情況下再次顯示錯誤?謝謝。
uj5u.com熱心網友回復:
雖然這不是最好的方法,但您可以從檔案中回顯 JSON 并在 ajax 函式中顯示這些錯誤,如下所示:
前端(ajax):
$("form").submit(function(e){
e.preventDefault();
$.ajax({
type: $(this).attr("method"),
url: $(this).attr("action"),
data: $(this).serialize() '&ajax=1',
dataType:'json',
success: function(res){
if(res.success === false){
$('#errors').html('<ul><li>' res.errors.join('</li><li>') '</li></ul>');
}else{
$('#errors').html('');
}
}
});
});
后端:
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$fname = $_POST['firstname'];
$formErrors = array();
if(strlen($fname) < 2 ){
$formErrors[] = "First name must be longer than 1 character";
}
// add this additional check
if(($_POST['ajax'] ?? 'N/A') == '1'){
echo json_encode(['success' => false,'errors' => $formErrors]);
exit; // since we will only send the JSON back to the browser, not the entire form
}
}
?>
將您的表單代碼更改為此(errors默認情況下始終添加一個 div):
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="POST">
<div id="errors"></div>
<input type="text" name="firstname">
<input type="submit" value="send">
</form>
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/420344.html
標籤:
