- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
首先,应用程序的工作原理如下:(注意:页面上有多个用户,如患者 M、患者 E 等)
1) 患者 X 姓名旁边是一个标记为登记 的按钮。这是在服务器端记录的。
2) 单击 checkin 按钮后,用户会看到一个下拉列表(替换初始按钮),其中包含用户可以选择的多个位置。从选择中选择一个位置后,服务器端将再次更新。
3) 然后用户可能决定选择多个位置,重复步骤 2
4) 最后,当用户完成位置选择后,他点击用户在第 2 步和第 3 步中点击位置的同一选择中的结帐按钮,标题为“结帐” .单击此按钮后,它会发送到 checkloc.php 并记录。
5) 最后,下拉菜单消失,出现“已 checkout ”字样。
不幸的是,现在的问题是,如果我是计算机 1,并且要完成单击“ checkin ”、选择位置和 checkout 的过程,这与计算机 2 执行的操作完全不同。
这是一个图表:
所以基本上我需要一种每隔几秒获取服务器代码并使用当前值更新表单元素的方法。我是一个非常新的程序员,所以代码和教程会更有帮助。另外,正如我刚才提到的,我是一名新程序员,所以如果我的代码能够以任何方式得到清理,那就太棒了。
感谢所有帮助!我很乐意澄清您的任何问题!
代码如下:
<script src="http://code.jquery.com/jquery-1.8.2.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('.locationSelect').hide(); // Hide all Selects on screen
$('.finished').hide(); // Hide all checked Out divs on screen
$('.checkOut').hide();
$('.checkIn').click(function() {
var $e = $(this);
var data = $e.data("param").split('_')[1] ;
// gets the id of button
// You can map this to the corresponding button in database...
$.ajax({
type: "POST",
url: "checkin.php",
// Data used to set the values in Database
data: { "checkIn" : $(this).val(), "buttonId" : data},
success: function() {
// Hide the current Button clicked
$e.hide();
// Get the immediate form for the button
// find the select inside it and show...
$('.locationSelect').show();
$('.checkOut').show();
}
});
});
$('.locationSelect').change(function() {
$e = $(this);
var data = $e.data("param").split('_')[1] ;
// gets the id of select
// You can map this to the corresponding select in database...
$.ajax({
type: "POST",
url: "changeloc.php",
data: { "locationSelect" : $(this).val(), "selectid" : data},
success: function() {
// Do something here
}
});
});
$('.checkOut').click(function() {
var $e = $(this);
var data = $e.data("param").split('_')[1] ;
// gets the id of button
// You can map this to the corresponding button in database...
$.ajax({
type: "POST",
url: "checkout.php",
// Data used to set the values in Database
data: { "checkOut" : $(this).val(), "buttonId" : data},
success: function() {
// Hide the current Button clicked
$e.hide();
$('.locationSelect').hide();
// Get the immediate form for the button
// find the select inside it and show...
$('.finished').show();
}
});
});
});
</script>
和 html:
<button class="checkIn" data-param="button_9A6D43BE-D976-11D3-B046-00C04F49F230">Check In</button>
<form method='post' class='myForm' action=''>
<select name='locationSelect' class='locationSelect' data-param="location_9A6D43BE-D976-11D3-B046-00C04F49F230">
<option value="0">Select a location</option>
<option value='1'>Exam Room 1</option>
<option value='2'>Exam Room 2</option>
<option value='3'>Exam Room 3</option>
<option value='4'>Exam Room 4</option>
</select>
</form>
<button class="checkOut" data-param="cbutton_9A6D43BE-D976-11D3-B046-00C04F49F230">Check Out</button>
<div class='finished' style='color:#ff0000;'>Checked Out</div>
这是服务器端代码(我把它分成了三个页面只是为了测试)
checkin .php
<?php
date_default_timezone_set('America/Denver');
$apptid = $_REQUEST['buttonId'];
$currentlocationstart = date("Y-m-d H:i:s");
if(isset($_REQUEST['checkIn'])){
$checkin = 0;
}
$hostname = 'localhost';
$username = '*******';
$password = '******';
$conn = new PDO("mysql:host=$hostname;dbname=sv", $username, $password);
$sql = "UPDATE schedule SET currentlocation = ?, currentlocationstart = ? WHERE apptid= ? ";
$q = $conn->prepare($sql);
$q->execute(array($checkin,$currentlocationstart, $apptid));
?>
locationchange.php
<?php
date_default_timezone_set('America/Denver');
$apptid = $_REQUEST['selectId'];
$currentlocationstart = date("Y-m-d H:i:s");
if(isset($_REQUEST['locationSelect'])){
$currentLocation = $_REQUEST['locationSelect'];
}
$hostname = 'localhost';
$username = '*****';
$password = '*******';
$conn = new PDO("mysql:host=$hostname;dbname=sv", $username, $password);
$sql = "UPDATE schedule SET currentlocation = ?, currentlocationstart = ? WHERE apptid= ? ";
$q = $conn->prepare($sql);
$q->execute(array($currentlocation,$currentlocationstart, $apptid));
?>
和 checkout.php
<?php
date_default_timezone_set('America/Denver');
$apptid = $_REQUEST['buttonId'];
$currentlocationstart = date("Y-m-d H:i:s");
if(isset($_REQUEST['checkOut'])){
$checkin = 1000;
}
$hostname = 'localhost';
$username = '*********';
$password = '********';
$conn = new PDO("mysql:host=$hostname;dbname=sv", $username, $password);
$sql = "UPDATE schedule SET currentlocation = ?, currentlocationstart = ? WHERE apptid= ? ";
$q = $conn->prepare($sql);
$q->execute(array($checkin,$currentlocationstart, $apptid));
?>
最佳答案
您指的是一种称为“心跳”的方法。我将在此处发布一个示例,但首先我想给您一些提示,因为正如您所说,您是新开发人员:)。
1) 对于 JQuery,尽量避免使用类选择器。这是出了名的慢。尽可能使用 id 选择器,如果不可能,则使用具有缩小搜索范围的节点名选择器。浏览器使用 ID 作为 dom 元素的一种“索引”或“键”,因此它是最快的搜索。
2) 预载!即使你打算使用类选择器,也不要这样做
$('.locationSelect')
一遍又一遍。如果您要多次引用同一个 DOM 元素,请执行以下操作:
var locationSelect = $('.locationSelect'); //this creates a reference
$(locationSelect).whatever() //this uses the reference
通过这样做,您只需搜索一次 DOM。对于较小的应用程序来说这似乎不是什么大问题,但是随着您的应用程序变得越来越复杂,搜索 DOM 以查找元素所花费的时间也越来越多。通过使用引用,您只需搜索一次。
3) (可选)我建议使用像 AngularJS(由 Google 编写)这样的 MVC 平台。 MVC 或 Model View Controller 允许您更新“模型”(基本上是 JavaScript 对象),“ View ”(HTML)使用称为 UI 绑定(bind)的东西自动调整其值。这是从一开始就开发应用程序的好方法,但如果您已经精通简明代码,那么这对您来说可能不切实际。我仍然会看一下他们的教程,看看它能为您提供什么:http://docs.angularjs.org/tutorial/
现在回到您原来的问题!是的,通过使用称为心跳的方法,jQuery 完全可以做到这一点。心跳允许您模拟服务器和客户端之间的数据持久性。心跳越频繁,您的客户端就越同步,但您的网络服务器上的负载也越大。这是一种平衡行为。
简而言之,它的工作原理如下:
setInterval(function(){
$.ajax({
url: 'heartbeatscript.php',
method: 'post'
//whatever data you want to send
}).done(function(data){
//do whatever with the returned result
});
},heartbeatInterval); //heartbeatInterval will be however many MS you want
我还建议使用 JSON 在客户端和服务器之间进行通信。 JSON 在两端都很容易解析,而在客户端,它只是解析大容量数据的最快机制。 JSON 被直接解析为 JavaScript 对象,因为该符号实际上是 JS 用来在浏览器中存储对象数据的方式。 XML 也是一个不错的选择。两者都很容易上手:
客户端:您可以使用 jQuery 来解析基本的 XML:
$('nodeName',xml);
您可以像这样将 JSON 解析为 JSO:
var JSO = JSON.parse(JSONString);
关于php - 每隔几秒刷新一次获取服务器代码并更新表单元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13318026/
我需要一个跟踪付款的结果,我可以在其中查看在过去五个小时内以 15 分钟为间隔使用了多少个付款选项。 我的表“payment_options_log”有两列:payment_option 和 crea
我创建了一个类似于节拍器的 Android 应用程序。实际上我想每 n 毫秒播放一次哔声。为此,我使用了 MediaPlayer 和计时器。 我的代码是这样的: 解决方案 1: start_butto
我有多个 Raspberry Pi 从移动设备收集 wifi 信标并将它们保存在 mySQL 数据库中。我在数据库中创建了一个 View 。数据库中的每个条目都有移动设备 mac 地址、pi id、r
我比较菜鸟我有一个天文台,当我点击一个按钮时它开始计时 crono = (Chronometer) findViewById(R.id.crono); begin= (Button) find
我有一个 python 脚本,我正在运行它,如下所示: python3 ./bin/abc.py --log_file ./web/prr.log 现在我需要确保上述进程每 3 小时运行一次。流程如下
我有以下列表。 vector = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] inserted_elements = [2, 2, 2, 2, 2] 我想通过插入每两个元素来获得以
我想知道安排代码的最佳方法。我有一个代码可以生成报告并每隔 24 小时向一组人发送邮件。它是一个基于控制台的 Java 应用程序。我想知道安排它的最佳方法。有时我可能需要将其更改为 12 小时间隔。但
这个问题在这里已经有了答案: Run certain code every n seconds [duplicate] (7 个答案) 关闭 8 年前。 我有一个线程类,它的循环需要每秒执行 4 次
我有一个很长的 clojure 字符串,我需要每 2 个字符用空格将其拆分(例如:“1234567890”-->“12 34 56 78 90”。我使用的解决方案是: (->> (partitio
我想在 3 个字符后添加一个冒号。所以“123:456:789:0”我想打印它。我怎样才能做到这一点。现在输出的方式:“123:4567890” String s = "1234567890"; Sy
我有一个包含以下(相关)列的表:id_mi、日期和值。我想使用 y 轴中“值”列中的值和 x 轴中的日期来构建图表,但由于它们很多,我希望图表上的点是 X 行的平均值。 对于这个例子,假设 X = 1
我有一个具有游戏风格元素的应用程序,即使它不是游戏,我有游戏中心正在运行,并且希望每次有 100 个“Chatters”加入他们的群组/论坛时通知当前设备用户。一旦用户达到某些里程碑(1k 订阅/加入
我有以下查询,用于计算每天的 CSR 调用指标和总数。我现在为每日报告运行它的方式是按扩展分组并将 now() 和 curdate() 值放在日期和时间列中。但是,我现在的任务是修改它以获取过去 30
例如,我想在每天凌晨 3 点在两个数据库之间运行同步 ruby 脚本(如果可能的话,在 rails 操作中)。将这些时间存储在数据库中会很好,因为如果同步失败,我想将其设置为在一个小时内重试(在数
我有一个 android studio 项目,它包含 C++ 代码。代码非常大,编译它大约需要 1.5 小时。每次当我点击“运行”或“调试”按钮时,gradle 中的第一个任务是:ProjectNam
所以我正在为现有的 c 应用程序编写一个图形用户界面。 gui 只是一个简单的界面,它只会显示而不会真正向应用程序反馈任何信息。但是如果有一些新信息可用,我需要检查一个链表。 现在我不想使用另一个线程
Java spring - 我有以下 cron 作业的 cron 表达式。 0 0/35 * * * ? 但是上面提到的 cron 表达式每小时触发一次,如下所示 1:35 2:35 3:35 4:3
为了对新表字段进行一些测试,我想伪造测试数据库中现有记录的一些值。我想为表中的每 8 条记录分配一个值。我可以使用以下语法轻松选择每 8 条记录: select * from (select ro
为 CakePHP 1.3 编写一个新功能,我希望密码在 x 天后过期,并在 y 天过期前自动将密码更改为随机字符串,并通过电子邮件向用户发送新密码或登录链接。服务器上的 crontab 是正确的方法
我正在学习 Python 和 Pygame,我要做的第一件事是一个简单的贪吃蛇游戏。我试图让蛇每 0.25 秒移动一次。这是我循环的代码部分: while True: check_for_qu
我是一名优秀的程序员,十分优秀!