【问题标题】:How to run a query when the page is finished loading? [duplicate]页面加载完成后如何运行查询? [复制]
【发布时间】:2016-06-13 14:42:59
【问题描述】:

我有一张这样的桌子:

// last_seen
+----+---------+--------------+
| id | id_user |     time     |
+----+---------+--------------+
| 1  | 545     | 1339412843   |
| 2  | 653     | 1339422601   |
| 3  | 813     | 1339412612   |
| 4  | 1030    | 1339717631   |
+----+---------+--------------+

每个用户在上表中都有一行。该行包含一个 unix_time,它声明了每个用户最后一次看到的时间。

我还有这个 PHP 脚本 (命名为 update_last_seen.php,它会根据每个请求为每个用户更新上次看到的内容:

// user is logged
if( isset($_SESSION["LoginValidation"]) && $_SESSION["LoginValidation"] == 1 ) {

   // it is ajax request
   if( !empty($_SERVER["HTTP_X_REQUESTED_WITH"]) &&
       strtolower($_SERVER["HTTP_X_REQUESTED_WITH"]) === "xmlhttprequest" ) {

        $db
        ->prepare("UPDATE last_seen SET time = ? WHERE id_user = ?")
        ->execute(array(time(), $_SESSION['id']));

   } -- ajax
} -- logged

目前我首先将上面的脚本运行到index.php。我的意思是每个页面在加载之前都会更新last_seen 表。所以请求确实会因更新而变慢。

现在我会在页面完成加载后发出 AJAX 推送请求。是否有任何JS事件来检测页面是否完全加载?

【问题讨论】:

    标签: javascript php jquery mysql


    【解决方案1】:

    您可以使用 vanilla JS 事件 DOMContentLoaded 并对文件进行 ajax 调用。

    或者你可以使用 jQuery .ready$.ajax

    $(document).ready(function() {
    
        $.ajax({
            url: '/last_seen.php',
            type: 'POST',
            dataType: "json",
            data: { id: '3' }
        }).done(function(data){
    
        });
    
    });
    

    【讨论】:

    • @Stack 不客气 :)
    【解决方案2】:

    据我所知,在 vanilla JS 中,您只需调用 DOMContentLoaded。

    document.addEventListener("DOMContentLoaded", function(event) {
       //insert code here
    });
    

    【讨论】:

      【解决方案3】:

      您可以使用原生 JS 事件 DOMContentLoaded 并对文件进行 ajax 调用。
      将ajax功能放在

      $(document).ready(function() {
          //put your code here
      }); 
      

      【讨论】:

      • 如果您将代码放在此块中,则代码在页面加载后运行..
      • @Stack 不客气 :)
      猜你喜欢
      • 1970-01-01
      • 2015-01-13
      • 2015-01-28
      • 2012-08-09
      • 2018-06-23
      • 1970-01-01
      • 1970-01-01
      • 2016-08-21
      • 1970-01-01
      相关资源
      最近更新 更多