0

我有以下显示会话数据的代码。面临的问题是即使会话具有值并且 ajax 获取该数据,我在函数调用 getValFromSession(qes) 下方放置的警报始终显示空数据。我认为这是由于在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']];
}
4

3 回答 3

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']];
}

希望这可以帮助。

于 2012-09-24T07:55:32.230 回答
1

$.ajax为您提供success,errorcomplete回调处理程序。在这些处理程序中填充您的响应文本,因为您实现的方式是同步的,并且会立即执行,而不是在请求完成后执行。

文档

于 2012-09-24T07:55:10.883 回答
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)); 
}
于 2012-09-24T07:56:06.923 回答