【发布时间】:2014-04-19 12:48:20
【问题描述】:
当用户在我的网络应用程序(php/js/html)中执行查找请求时,我正在尝试实现一个进度条。
当用户执行查找请求时,应用程序使用 ajax 执行 php 脚本,该脚本定期将其进度存储在 session 变量中。
我试图做的是用另一个 ajax 请求轮询服务器以请求会话进度变量,但该变量不存在。
为什么会发生这种情况,使用 php 会话是不可能的吗?
谢谢
JS 逻辑:
// When the user selects interested object, find it on the server
$(document).on('change', '#findStreamer', function()
{
$streamerId = $(this).val();
$streamerName = $('#findStreamer option[value="'+$streamerId+'"]').text();
console.log('findDB', $streamerId, $streamerName);
addProgressBar();
getProgress();
$.ajax({
type: 'POST',
url: 'serverlink/findobject',
data: {
findChannel: $streamerName,
checkOnline: true
},
success: function(response)
{
$streamData = JSON.parse(response);
$('#streamPreview').remove();
// $('#findPanelToolbar').before($streamData.streamerView);
console.log($streamData);
}
});
});
function getProgress()
{
$.ajax({
type: 'POST',
url: 'serverlink/getprogress',
complete: getProgress,
timeout: 60000,
success: function(response)
{
$progresValue = response;
updateProgressBar($progresValue);
}
});
}
服务器逻辑:
public function action_findobject()
{
$_SESSION['percentage'] = 0;
if(!(Input::is_ajax()))
{
$response = Response::forge();
$response->set_status(400);
return $response;
}
// Long actions //
$_SESSION['percentage'] = 10;
// Long actions //
$_SESSION['percentage'] = 45;
// Long actions //
$_SESSION['percentage'] = 100;
return $Outputdata;
}
public function action_getprogress()
{
return $_SESSION['percentage'];
}
【问题讨论】:
-
请贴出相关代码
-
你还记得
session_start();吗? -
是的,在写入和读取变量时设置了会话开始,我使用的是 php 框架,为了清楚起见,我将代码更改为普通 php。如果在会话中找不到变量,getprogress 函数总是返回默认值。
标签: javascript php jquery ajax session