我有以下显示会话数据的代码。面临的问题是即使会话有值而且ajax获取该数据我在函数调用下面的警报getValFromSession(qes)总是显示空数据.I认为这是由于在javascript中异步执行ajax。所以我放了一些额外的代码,如函数
所示
getValFromSession(qid)。我如何克服这个异步问题?
var qes=$('#qsid_'+q).val();
var res=getValFromSession(qes);
alert(res);//always shows null value
$('#select_'+).val(parseInt(res));
function getValFromSession(qid)
{
return $.ajax({
url : site_url_js+"controller/getValFromSession",
type : "POST",
data : "qid="+qid,
cache: false,
async: false
}).responseText;
}
/*controller*/
function getValFromSession()
{
echo $_SESSION['time'][$_REQUEST['qid']];
}
答案 0 :(得分:3)
试试这个:
var qes=$('#qsid_'+q).val();
var res=getValFromSession(qes);
function getValFromSession(qid)
{
$.ajax({
url : site_url_js+"controller/getValFromSession",
type : "POST",
data : "qid="+qid,
cache: false,
async: false,
success: function(data) {
alert(data); // alert here in successHandler
$('#select_'+).val(parseInt(data));
}
})
}
/*controller*/
function getValFromSession()
{
echo $_SESSION['time'][$_REQUEST['qid']];
}
希望这有帮助。
答案 1 :(得分:1)
$.ajax
为您提供了success
,error
和complete
回调处理程序。在这些处理程序中填充响应文本,因为您实现的方式是同步的,并且会立即执行而不是在请求完成后执行。
答案 2 :(得分:0)
您可以将代码放入函数中,并在AJAX成功事件中调用该函数,如下所示
---
---
return $.ajax({
url : site_url_js+"controller/getValFromSession",
type : "POST",
data : "qid="+qid,
false,
async: false,
success: finalfunction
---
---
function finalfunction(res)
{
alert(res);//always shows null value
$('#select_'+).val(parseInt(res));
}