4 示例
有以下一个范例,当点击【提交】按钮时,前端会给后台服务器发送两种请求。
一种是get请求,每隔1秒请求一次。
一种是post请求,最开始的时候发送一次,而后等待相应结束。
看看HTML代码
javascript
<form>
<input type="submit" value="提交" />
</form>
<script src="//cdn.bootcss.com/jquery/3.1.1/jquery.min.js"></script>
<script type="text/javascript">
$('form').on('submit', function(e) {
e.preventDefault();
// 每隔一秒请求一次服务器
var id = setInterval(function() {
$.get(
'save.php?action=get',
{},
function(data) {
console.log(data);
},
'json'
);
}, 1000);
$.post(
'save.php?action=post',
{},
function(data) {
console.log(data);
// 中止定时循环
clearInterval(id);
},
'json'
);
});
</script>
php代码
php
<?php
session_start();
$action = $_GET['action'];
if ($action == 'post') {
$_SESSION['time'] = 0;
session_write_close();
while ($_SESSION['time'] < 5) {
session_start();
$_SESSION['time'] = $_SESSION['time'] + 1;
// 将SESSION数据写入文件中,并关闭写锁
session_write_close();
// sleep()模拟花费时间较长的程序,这样在关闭写锁以后,
// 服务器就可以相应别的请求,以下的$action=get,
sleep(1);
}
echo json_encode([session_id() => $_SESSION['time']]);
exit();
}
if ($action == 'get') {
echo json_encode([session_id() => $_SESSION['time']]);
exit();}