对象窗口上的设置,如果我在警报下调用函数[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 );
}
}
})
答案 0 :(得分:1)
您的“ctrUpdateCount”功能正在使用$.post()
,异步。函数返回由异步操作的结果确定的值是不可能的;它本质上是荒谬的。
我真的不知道你要做什么,但基本上你必须做你需要做的事情,将“POST”操作的结果里面的回调函数改为{ {1}}。