gpt4 book ai didi

javascript - jQuery 代码无法正常工作,但也没有显示任何错误

转载 作者:行者123 更新时间:2023-12-02 22:24:15 25 4
gpt4 key购买 nike

我有一些 jQuery 代码用于调用一个单独的 PHP 文件(其中还包含一个 jQuery 倒计时时钟),尽管没有显示任何错误,但似乎没有加载任何 jQuery 代码部分。

我用来调用文件 stats_bar.php 的代码是:

<?php
if(isset($_SESSION['uid'])){
include("safe.php");
include("cron_update_stats.php");
?>

<div id="stats_bar"></div>

<script>

// Stats Bar Script - Currently Not Working

$(document).ready(function() {
function loadlink() {
$.get('ajax/stats_bar.php', '', function(res) {
res = $(res).filter('#stats_bar');
$('#stats_bar').replaceWith(res);
});
}
loadlink();

setInterval(function(){
loadlink(); // this will run after every 1 second
}, 1000);
});

</script>

<?php
}
?>

并且stats_bar.php包含以下代码:

<div id="stats_bar">

<script>
function startTimer(duration, display) {
var start = Date.now(),
diff,
minutes,
seconds;
function timer() {
// get the number of seconds that have elapsed since
// startTimer() was called
diff = duration - (((Date.now() - start) / 1000) || 0);

// does the same job as parseInt truncates the float
minutes = (diff / 60) || 0;
seconds = (diff % 60) || 0;

minutes = minutes < 10 ? "0" + minutes : minutes;
seconds = seconds < 10 ? "0" + seconds : seconds;

display.textContent = minutes + ":" + seconds;

if (diff <= 0) {
// add one second so that the count down starts at the full duration
// example 10:00 not 09:59
start = Date.now() + 1000;
}
}
// we don't want to wait a full second before the timer starts
timer();
setInterval(timer, 1000);
}

$(document).ready(function() {
var tenMinutes = 60 * 10,
display = document.querySelector('#time');
startTimer(tenMinutes, display);
});
</script>

<?php $clock = "<span id=\"time\"></span>"; ?>

<header class="sticky-top">

<div class="d-lg-none d-xl-none">
<div class="container-flex pt-2 pb-2" style="background-color: #191919">
<div class="container">
<div class="justify-content-left text-light d-flex flex-column">
<div class="pl-md-3 pr-md-3"><b class="text-primary">TURNS &raquo;</b> <?php echo number_format($stats['turns']); ?> <?php if($stats['turns'] < 250){ echo "<small class='text-warning'>(+5 turns in $clock)</small>"; }else{ echo "<small class='text-danger'>(Max. turns)</small>"; }?></div>
<div class="pl-md-3 pr-md-3"><b class="text-primary">BANK &raquo;</b> Gold: <?php echo number_format($stats['bankgold']); ?> &#8901; Food: <?php echo number_format($stats['bankfood']); ?></div>
<div class="pl-md-3 pr-md-3"><b class="text-primary">RESOURCES &raquo;</b> Gold: <?php echo number_format($stats['gold']); ?> &#8901; Food: <?php echo number_format($stats['food']); ?></div>
<div class="pl-md-3 pr-md-3"><b class="text-primary">INCOME &raquo;</b> Workers: <?php echo number_format($unit['worker']); ?> &#8901; Farmers: <?php echo number_format($unit['farmer']); ?></div>
<div class="pl-md-3 pr-md-3"><b class="text-primary">BATTLE &raquo;</b> Warriors: <?php echo number_format($unit['warrior']); ?> &#8901; Defenders: <?php echo number_format($unit['defender']); ?> &#8901; Thieves: <?php echo number_format($unit['thief']); ?></div>
<div class="pl-md-3 pr-md-3"><b class="text-primary">WEAPONS &raquo;</b> Swords: <?php echo number_format($weapon['sword']); ?> &#8901; Shields: <?php echo number_format($weapon['shield']); ?></div>
</div>
</div>
</div>
</div>

<div class="d-none d-lg-block">
<div class="container-flex pt-3 pb-3" style="background-color: #191919">
<div class="container">
<div class="d-flex flex-wrap justify-content-left text-light">
<div class="pl-2 pl-md-3 pr-2 pr-md-3 pt-1 pb-1"><b class="text-primary">TURNS &raquo;</b> <?php echo number_format($stats['turns']); ?> <?php if($stats['turns'] < 250){ echo "<small class='text-warning'>(+5 turns in $clock)</small>"; }else{ echo "<small class='text-danger'>(Max. turns)</small>"; }?></div>
<div class="pl-2 pl-md-3 pr-2 pr-md-3 pt-1 pb-1"><b class="text-primary">BANK &raquo;</b> Gold: <?php echo number_format($stats['bankgold']); ?> &#8901; Food: <?php echo number_format($stats['bankfood']); ?></div>
<div class="pl-2 pl-md-3 pr-2 pr-md-3 pt-1 pb-1"><b class="text-primary">RESOURCES &raquo;</b> Gold: <?php echo number_format($stats['gold']); ?> &#8901; Food: <?php echo number_format($stats['food']); ?></div>
<div class="pl-2 pl-md-3 pr-2 pr-md-3 pt-1 pb-1"><b class="text-primary">INCOME UNITS &raquo;</b> Workers: <?php echo number_format($unit['worker']); ?> &#8901; Farmers: <?php echo number_format($unit['farmer']); ?></div>
<div class="pl-2 pl-md-3 pr-2 pr-md-3 pt-1 pb-1"><b class="text-primary">BATTLE UNITS &raquo;</b> Warriors: <?php echo number_format($unit['warrior']); ?> &#8901; Defenders: <?php echo number_format($unit['defender']); ?> &#8901; Thieves: <?php echo number_format($unit['thief']); ?></div>
<div class="pl-2 pl-md-3 pr-2 pr-md-3 pt-1 pb-1"><b class="text-primary">WEAPONS &raquo;</b> Swords: <?php echo number_format($weapon['sword']); ?> &#8901; Shields: <?php echo number_format($weapon['shield']); ?></div>
</div>
</div>
</div>
</div>

</header>
</div>

当使用 include('ajax/stats_bar.php'); 而不是 jQuery 代码来调用 PHP 文件时,一切都完全按预期工作,除了 jQuery 倒计时时钟PHP 文件的行为方式与用于调用 PHP 文件的 jQuery 代码相同,但是我还检查了倒计时时钟代码是否有错误,但它也没有显示任何错误,所以我现在很困惑?

这里有什么我遗漏或忽略的东西吗?

更新

当内容位于单独的 PHP 文件中时,selfagency 给出的正确答案可用于通过使用 GET 和 POST 来实现所需的结果,但是我也能够使用正确答案中提供的信息来生成相同的结果仅使用主页的效果,这意味着加载内容之间没有延迟 - 我已经包含了下面的代码。

请注意,这里所取得的结果可能不是总体上最好的结果,因为我在这两种方法中发现的是,因为页面不断刷新 PHP 的部分,因此不断请求数据,请求数量和总体带宽是天文数字,以至于已经包含少量 PHP 请求的页面很快就会崩溃。

我会继续寻找更好的解决方案!

<?php
if(isset($_SESSION['uid'])){
include("safe.php");
include("cron_update_stats.php");
$currenttime = time();
$time = date('i:s', (10 * 60) - ($currenttime % (10 * 60)));
$bankgold_r = number_format($stats['bankgold']);
$bankfood_r = number_format($stats['bankfood']);
$gold_r = number_format($stats['gold']);
$food_r = number_format($stats['food']);
$worker_r = number_format($unit['worker']);
$farmer_r = number_format($unit['farmer']);
$warrior_r = number_format($unit['warrior']);
$defender_r = number_format($unit['defender']);
$thief_r = number_format($unit['thief']);
$sword_r = number_format($weapon['sword']);
$shield_r = number_format($weapon['shield']);
$turns_r = number_format($stats['turns']);
?>

<script>
setInterval("my_function();",1000);
function my_function(){
$('#refresh_countdown_clock').load(location.href + ' #countdown_clock');
$('#refresh_bankgold').load(location.href + ' #bankgold');
$('#refresh_bankgold_m').load(location.href + ' #bankgold_m');
$('#refresh_bankfood').load(location.href + ' #bankfood');
$('#refresh_bankfood_m').load(location.href + ' #bankfood_m');
$('#refresh_gold').load(location.href + ' #gold');
$('#refresh_gold_m').load(location.href + ' #gold_m');
$('#refresh_food').load(location.href + ' #food');
$('#refresh_food_m').load(location.href + ' #food_m');
$('#refresh_worker').load(location.href + ' #worker');
$('#refresh_worker_m').load(location.href + ' #worker_m');
$('#refresh_farmer').load(location.href + ' #farmer');
$('#refresh_farmer_m').load(location.href + ' #farmer_m');
$('#refresh_warrior').load(location.href + ' #warrior');
$('#refresh_warrior_m').load(location.href + ' #warrior_m');
$('#refresh_defender').load(location.href + ' #defender');
$('#refresh_defender_m').load(location.href + ' #defender_m');
$('#refresh_thief').load(location.href + ' #thief');
$('#refresh_thief_m').load(location.href + ' #thief_m');
$('#refresh_sword').load(location.href + ' #sword');
$('#refresh_sword_m').load(location.href + ' #sword_m');
$('#refresh_shield').load(location.href + ' #shield');
$('#refresh_shield_m').load(location.href + ' #shield_m');
$('#refresh_turns').load(location.href + ' #turns');
$('#refresh_turns_m').load(location.href + ' #turns_m');
}
</script>

<header class="sticky-top">

<div class="d-lg-none d-xl-none">
<div class="container-flex pt-2 pb-2" style="background-color: #191919">
<div class="container">
<div class="justify-content-left text-light d-flex flex-column">
<div class="pl-md-3 pr-md-3"><b class="text-primary">TURNS &raquo;</b> <span id="refresh_turns_m"><span id="turns_m"><?php echo $turns_r; ?> <?php if($stats['turns'] < 250){ echo "<small class='text-warning'>(+5 turns in ".$time.")</small>"; }else{ echo "<small class='text-danger'>(Max. turns)</small>"; }?></span></span></div>
<div class="pl-md-3 pr-md-3"><b class="text-primary">BANK &raquo;</b> Gold: <span id="refresh_bankgold_m"><span id="bankgold_m"><?php echo $bankgold_r; ?></span></span> &#8901; Food: <span id="refresh_bankfood_m"><span id="bankfood_m"><?php echo $bankfood_r; ?></span></span></div>
<div class="pl-md-3 pr-md-3"><b class="text-primary">RESOURCES &raquo;</b> Gold: <span id="refresh_gold_m"><span id="gold_m"><?php echo $gold_r; ?></span></span> &#8901; Food: <span id="refresh_food_m"><span id="food_m"><?php echo $food_r; ?></span></span></div>
<div class="pl-md-3 pr-md-3"><b class="text-primary">INCOME &raquo;</b> Workers: <span id="refresh_worker_m"><span id="worker_m"><?php echo $worker_r; ?></span></span> &#8901; Farmers: <span id="refresh_farmer_m"><span id="farmer_m"><?php echo $farmer_r; ?></span></span></div>
<div class="pl-md-3 pr-md-3"><b class="text-primary">BATTLE &raquo;</b> Warriors: <span id="refresh_warrior_m"><span id="warrior_m"><?php echo $warrior_r; ?></span></span> &#8901; Defenders: <span id="refresh_defender_m"><span id="defender_m"><?php echo $defender_r; ?></span></span> &#8901; Thieves: <span id="refresh_thief_m"><span id="thief_m"><?php echo $thief_r; ?></span></span></div>
<div class="pl-md-3 pr-md-3"><b class="text-primary">WEAPONS &raquo;</b> Swords: <span id="refresh_sword_m"><span id="sword_m"><?php echo $sword_r; ?></span></span> &#8901; Shields: <span id="refresh_shield_m"><span id="shield_m"><?php echo $shield_r; ?></span></span></div>
</div>
</div>
</div>
</div>

<div class="d-none d-lg-block">
<div class="container-flex pt-3 pb-3" style="background-color: #191919">
<div class="container">
<div class="d-flex flex-wrap justify-content-left text-light">
<div class="pl-2 pl-md-3 pr-2 pr-md-3 pt-1 pb-1"><b class="text-primary">TURNS &raquo;</b> <span id="refresh_turns"><span id="turns"><?php echo $turns_r; ?> <?php if($stats['turns'] < 250){ echo "<small class='text-warning'>(+5 turns in ".$time.")</small>"; }else{ echo "<small class='text-danger'>(Max. turns)</small>"; }?></span></span></div>
<div class="pl-2 pl-md-3 pr-2 pr-md-3 pt-1 pb-1"><b class="text-primary">BANK &raquo;</b> Gold: <span id="refresh_bankgold"><span id="bankgold"><?php echo $bankgold_r; ?></span></span> &#8901; Food: <span id="refresh_bankfood"><span id="bankfood"><?php echo $bankfood_r; ?></span></span></div>
<div class="pl-2 pl-md-3 pr-2 pr-md-3 pt-1 pb-1"><b class="text-primary">RESOURCES &raquo;</b> Gold: <span id="refresh_gold"><span id="gold"><?php echo $gold_r; ?></span></span> &#8901; Food: <span id="refresh_food"><span id="food"><?php echo $food_r; ?></span></span></div>
<div class="pl-2 pl-md-3 pr-2 pr-md-3 pt-1 pb-1"><b class="text-primary">INCOME UNITS &raquo;</b> Workers: <span id="refresh_worker"><span id="worker"><?php echo $worker_r; ?></span></span> &#8901; Farmers: <span id="refresh_farmer"><span id="farmer"><?php echo $farmer_r; ?></span></span></div>
<div class="pl-2 pl-md-3 pr-2 pr-md-3 pt-1 pb-1"><b class="text-primary">BATTLE UNITS &raquo;</b> Warriors: <span id="refresh_warrior"><span id="warrior"><?php echo $warrior_r; ?></span></span> &#8901; Defenders: <span id="refresh_defender"><span id="defender"><?php echo $defender_r; ?></span></span> &#8901; Thieves: <span id="refresh_thief"><span id="thief"><?php echo $thief_r; ?></span></span></div>
<div class="pl-2 pl-md-3 pr-2 pr-md-3 pt-1 pb-1"><b class="text-primary">WEAPONS &raquo;</b> Swords: <span id="refresh_sword"><span id="sword"><?php echo $sword_r; ?></span></span> &#8901; Shields: <span id="refresh_shield"><span id="shield"><?php echo $shield_r; ?></span></span></div>
</div>
</div>
</div>
</div>

</header>

最佳答案

jQuery load方法不会执行 HTML 片段中包含的 JavaScript。尝试使用 get方法,并使用回调将片段附加到您的页面。

尝试:

// main.php

<div id="stats_bar"></div>

<script>
$(document).ready(function() {
function loadlink() {
$.get('ajax/stats_bar.php', function(res) {
res = $(res).filter('#stats_bar');
$('#stats_bar').replaceWith(res);
});
}
loadlink();
});
</script>
// statsbar.php

<div id="stats_bar">
<h1>Test</h1>
<script>
console.log('it works!');
</script>
</div>

注意以下变化:

<script language="JavaScript" type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js">

<script>

您需要输入 <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js">在您的文档中<head>只需使用 <script>在代码块的开头。

您正在加载的 PHP 文件中的 JavaScript 似乎也存在一些错误。替换这个:

<script language="JavaScript" type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js">

<script> .

然后在底部更改:

window.onload = function() {
var tenMinutes = 60 * 10,
display = document.querySelector('#time');
startTimer(tenMinutes, display);
};

至:

$(document).ready(function() {
var tenMinutes = 60 * 10,
display = document.querySelector('#time');
startTimer(tenMinutes, display);
});

POST方法示例:

    function loadlink() {
const data = {
stats: {
[...]
}
}

$.post('ajax/stats_bar.php', data, function(res) {
res = $(res).filter('#stats_bar');
$('#stats_bar').replaceWith(res);
});
}

关于javascript - jQuery 代码无法正常工作,但也没有显示任何错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59121629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com