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();}