使用ajax更新数据库记录的Laravel刷新页面

Posted

技术标签:

【中文标题】使用ajax更新数据库记录的Laravel刷新页面【英文标题】:Laravel refresh page on database's record update with ajax 【发布时间】:2016-09-27 14:15:47 【问题描述】:

我有一个包含 4 列的 mysql 表。其中之一是来自 timestamps() 的 updated_at()。 任何人都知道如何检测 updated_at 列何时更改并使用 ajax 更新某个页面?

我知道更好的方法是使用网络套接字,但对于我的项目来说有点过头了。该项目位于 laravel 5.2

【问题讨论】:

【参考方案1】:

您可以使用Model Events检测模型何时更新 但我不知道如何在没有 Web 套接字的情况下从 php 脚本刷新 html 页面。

编辑

试试

Route::get('checkIfModelUpdated/id', function($id) 
    $model = YourModelClass::find($id);
    $updatedAt = Request::get('updated_at');
    return json_encode($model->updated_at->gt($updetedAt));
);

和客户端代码

setInterval(function() 
       $.get('/checkIfModelUpdated/'+YOUR_MODEL_ID,
       updated_at: LAST_UPDATED_AT,
       function(data) 
           if (JSON.parse(data) == true) 
                // refresh your page
       );
   , 1000); 

【讨论】:

那么答案如何? 给我一些时间来测试它...我是一个 ajax 新手 小心,我现在睡着了,所以代码中可能有很多错误【参考方案2】:

如果没有 Web 套接字,唯一的方法是在后台运行 javascript setInterval 并运行对 Laravel API 的 ajax 调用。 API 将检查是否有任何更改并响应更新,这些更新将由您的 ajax 回调接收并应用于页面。

【讨论】:

setInterval(ajaxCall, 300000); function ajaxCall() 这样的事情,如果 mysql 列已更改值,我将检查 ajaxCall() 函数? 没错,就是这样。您的 API 应检查数据库的更改并响应您可能希望在页面中更新的任何更改。 你能给我一个例子,说明如何检查 ajaxCall 函数中的 db 列值是否发生变化? Ajax 不是我的菜 :(

以上是关于使用ajax更新数据库记录的Laravel刷新页面的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel 的 DataTable 列表页面中更新状态

Laravel/Ajax:刷新表格将新数据堆叠在底部(旧数据保留)

405 方法不允许,PATCH 不工作。 Laravel、Ajax、Jquery、引导模式

ajax具体实现学习记录

Laravel 使用 Ajax 提交表单而不刷新页面

Laravel 8 和 Ajax - 将数据插入表中总是刷新加载