我的网站标题中有这个 JavaScript 函数。在第一页加载时,一切都按预期工作,我得到响应 onsuccess 被触发并更新指定的 div 标签。
我var reqid = "<?= $_GET['id']; ?>";
用来获取页面的ID。
当我浏览我的应用程序并加载相同的页面但 url 字符串中具有不同的 id 时,var reqid = "<?= $_GET['id']; ?>";
不会更新并恢复为以前的值。每次显示页面时如何更新它?
var request = function() {
function onSuccess(data, status)
{
$("#notif").fadeIn(2000);
data = $.trim(data);
if(data == "SUCCESS"){
$("#notif").html('<div class="notification-box-green"> <img class="notification-icon" src="images/lists/list-tick.png" alt=""> <p class="notification-text">Success!</p></div>').fadeIn(4000);
$('#notif').fadeOut(4000, function() {
});
} else if(data == "LIMIT")
{
$("#notif").html('<div class="notification-box-yellow"><img class="notification-icon" src="images/lists/list-warning.png" alt=""><p class="notification-text">Please Wait!</p></div>').fadeIn(4000);
$('#notif').fadeOut(4000, function() {
});
} else if(data == "NO_WIFI")
{
$("#notif").html('<div class="notification-box-yellow"><img class="notification-icon" src="images/lists/list-warning.png" alt=""><p class="notification-text">Connect to hostspot!</p></div>').fadeIn(4000);
$('#notif').fadeOut(4000, function() {
});
}
}
var reqid = "<?= $_GET['id']; ?>";
$.ajax({
type: "POST",
url: "req_sub.php",
cache: false,
data: "id="+ reqid,
success: onSuccess
});
}
通过单击按钮调用该函数。
编辑
我稍微修改了我的代码并将其放入自己的 js 文件中。
id 现在似乎按预期更新。
一个问题仍然存在,onsuccess 中的代码没有第二次执行。第一次加载或刷新时,div 会按预期更改,导航回 url 中具有不同 id 的页面不会更新 div。
function getUrlVars() {
var vars = {};
var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
vars[key] = value;
});
return vars;
}
var request = function() {
var reqid = getUrlVars()["id"];
function onSuccess(data, status)
{
编辑 2
我克隆了 div 并在完成后替换了它。
var divClone = $("#notif").clone();
var request = function() {
var reqid = getUrlVars()["id"];
function onSuccess(data, status)
{
$("#notif").fadeIn(2000);
data = $.trim(data);
if(data == "SUCCESS"){
$("#notif").html('<div class="notification-box-green"> <img class="notification-icon" src="images/lists/list-tick.png" alt=""> <p
class="notification-text">Success!</p></div>').fadeIn(4000);
$('#notif').fadeOut(4000, function() {
$("#notif").replaceWith(divClone);
怀疑这是实现我目标的正确方法,将在睡眠后进一步测试并更新结果。