-1

オブジェクトウィンドウの設定は、アラートの下で関数[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 );
    }
  } 
})
4

1 に答える 1

1

「ctrUpdateCount」関数は、非同期$.post()のを使用しています。その非同期操作の結果によって決定される値を関数に返すことは不可能です。それは本質的に無意味です。

私はあなたが何をしようとしているのか本当にわかりませんが、基本的には、へのコールバック関数$.post()の「POST」操作の結果を使って必要なことをしなければなりません。

于 2012-08-22T22:42:01.810 に答える