オブジェクトウィンドウの設定は、アラートの下で関数[ctrUpadateCount]を呼び出した場合にのみ「修正」され、直接呼び出した場合は機能しません。なぜですか?別のプロジェクトでも同じ問題が発生しました。そして、ここでは適用できないソリューションを適用する必要がありました。私は以下のコードを説明しようとしました...ps:悪い英語でごめんなさい。
function ctrUpdateCount(idCtrForm)
{
$.ajaxSetup({ assync: false});
tableName= 'clients';
p_comando="select count(*) total from "+tableName;
$.post("execute.php", {comando : p_comando}, function(json){
v_total=json[1].total ; // <= this retuns 3
window['ctrBuffer_'+idCtrForm].count=v_total;
alert("count inside = "+ window['ctrBuffer_'+idCtrForm].count );//this alerts 3
},'json');
}
jQuery.fn.extend( { ctrLoad: function()
{
if( $(this).get(0).tagName =='FORM'){
idCtrForm=$(this).attr('id');
alert("direct count ="+ctrUpdateCount(idCtrForm) ); // this will alert 3
// and so the next alert
//teste=ctrUpdateCount(idCtrForm); // but if I use this,
//the next alert will show "undefined"
alert("count after = "+ window['ctrBuffer_'+idCtrForm].count );
}
}
})