我不知道是否只有 PHP 才有可能,但我想会在这里问...
我有一个每 15 天更新一次数据的 PHP 代码。我的问题是它更新整个过程需要超过 5 秒,因此用户必须等到更新完成。
我正在寻找的是我想在用户查看内容时进行后台更新。或者在加载网页后显示正在更新的闪烁文本。
我当前的代码如下:-
$result = $db->sql_query("SELECT * FROM data1,data2,data3,data4 WHERE person='" .$name. "'");
$row = $db->sql_fetchrow($result);
$day = $row['regtime'];
$days = (strtotime(date("Y-m-d")) - strtotime($row['regtime'])) / (60 * 60 * 24);
if($row > 0 && $days < 15){
$row = ['name'];
$row = ['age'];
$row = ['place'];
$row = ['address'];
$row = ['lat'];
$row = ['long'];
$row = ['geo'];
//etc
}else{ //do update
//insert into database
}
最佳答案
好的马修,
这里假设您在页面上有一个空的 div,其 id=myStatusDiv。此外,它假定您有一个 url/php 文件/home/longprocess。将 jquery 添加到页面,然后在页面底部添加以下内容:
<script type="text/javascript">
$(document).ready(function() {
$.ajax({
type: 'POST',
data: "username=" + $("#username").val(),
url: 'longprocess.php',
beforeSend: function() {
// you could also put a spinner img or whatever here too..
$("#myStatusDiv").html("please wait, page being updated...");
},
success: function(result) {
$("#myStatusDiv").html(result);
}
});
});
</script>
基本上,当 dom 加载后,$.ajax 函数将在后台静默运行。完成后,myStatusDiv div 将填充您从 longprocess 方法生成的任何状态消息。这可以是从一条简单消息到页面上“几乎”整个部分的任何内容。您的 PHP 页面只需搜索通过数据对象发送的命名参数 - 即在上面的示例中 -> $name = $_POST['username'];
网上和 SO 中有很多示例。
祝你好运(提示:在 google 上搜索“php ajax jquery $_POST”);)
吉姆
[edit] - 当然,您必须在 $,ajax 方法中包含您的 $_POST 变量...我假设您有一个文本框输入id=用户名。还有很多例子,但这里有一个我发现的快速例子:http://www.talkphp.com/vbarticles.php?do=article&articleid=58&title=simple-ajax-with-jquery
关于php - 通过 PHP 进行后台更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3253748/