0

セッションデータを表示する次のコードがあります。直面している問題は、セッションに値があり、ajax がそのデータを取得しても、関数呼び出し getValFromSession(qes) の下に配置したアラートが常に null データを表示することです。 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

$.ajaxsuccesserrorおよびcompleteコールバック ハンドラを提供します。実装した方法は同期的であり、要求が完了した後ではなくすぐに実行されるため、これらのハンドラーに応答テキストを入力します。

ドキュメント

于 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 に答える