[英]Webpage UI not updating on refresh after form submission
我正在創建一個Web應用程序,在其中可以從任何頁面進行登錄。 為了實現這一點,我使用了一種用於登錄表單的模式。 成功登錄后,我希望用戶停留在同一頁面上。 這是我的登錄驗證腳本。
$.ajax({
dataType: "json",
type: "POST",
data: {
login: true,
email: cleanScripts($('#username').val()),
password: cleanScripts($('#password').val())
},
url: "plugins/validator.php",
success: function () {
location.reload();
},
error: function () {
$('.error').show();
}
});
在標題模板(我具有登錄按鈕的位置)上,檢查用戶是否已登錄並更新html代碼,如下所示
if (!isset($_SESSION['userIdMain']))
echo '<li>
<a href="#" onclick="showLoginForm();">
<i class="dashicons dashicons-lock"></i>
<span>LOGIN/SIGN UP</span>
</a>
</li>';
else echo '<span>Hi, ' . $_SESSION["userName"] . '</span>';
頁眉模板包含在頁面中,使用
<?php include 'templates/header.php' ?>
理想情況下,成功登錄后,頁面應該刷新,而不是LOGIN / SIGNUP按鈕,它應該顯示已登錄用戶的名稱。 但是用戶界面沒有更新。 即使成功登錄后,頁面也會顯示LOGIN / SIGNUP按鈕。
當我導航到其他頁面時,它按預期運行。 用戶界面未針對執行登錄的頁面進行更新。 知道為什么會這樣嗎?
謝謝
在Ajax成功之后,下面的代碼似乎無法正常工作。
success: function () { location.reload(); },
嘗試下面的代碼怎么樣
success: function () {
window.location.href=window.location.href;
},
如果以上任一方法也不起作用,請問出現此問題時使用的瀏覽器嗎?
也許下面的代碼是由chrome緩存系統緩存的,它認為php從未更改,因此沒有發出php請求。
success: function () { location.reload(); },
嘗試下面的代碼,它將獲得服務器資源,而無需考慮資源是否曾經被更改。
success: function () {
location.reload(true);
},
希望這會對您有所幫助。
強制使用javascript-no-cache重新加載Chrome中的頁面
根據上面的文章,結果如下:
在IE和FF上,我發現以下代碼可以正常工作;
window.location.reload(true);
但是,它不適用於Chrome或Safari。
因此,似乎有以下兩種解決方案。
嘗試代碼提示了上面鏈接的文章
success: function () { $.ajax({ url: window.location.href, headers: { "Pragma": "no-cache", "Expires": -1, "Cache-Control": "no-cache" } }).done(function () { window.location.reload(true); }); },
問題與session_start()有關; 。 session_start()必須在每個頁面上調用。 我的模板文件的頂部具有session_start(),因此它已成功寫入$ _SESSION變量。
這就是它的樣子。
主文件
<?php
//Header contains login forms
include_once 'templates/header.php';
// All the other codes
$var = $_SESSION['loginData'];
include_once 'templates/footer.php';
?>
頭文件
<?php
session_start();
$_SESSION['loginData']=$_POST['loginId'];
?>
即使從頭文件調用了session_start(),它也無法在主文件中使用。 必須在每個需要訪問$ _SESSION的文件上調用session_start()。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.