ajax コールバック関数がアクティブになったら、内部関数を呼び出したいです。遅延があるため、ローカル変数が呼び出されたときにまだ正しいかどうか、特にコールバック関数で使用される this.response_element を知りたいです。
コールバック関数は、ajax 時に開始されます。status == 200
var ControlSignIn = function( )
{
this.form_element = document.getElementById( 'signin' ),
this.response_element = document.getElementById( 'signin_response' ),
this.text_object = new Text( this.form_element ),
this.message_object = new Message( this.response_element );
};
ControlSignIn.interface = function()
{
new ControlSignIn().invoke();
};
ControlSignIn.prototype.invoke = function( )
{
if( CONSTANT.VALIDATE_ON === 1 )
{
if( !this.text_object.checkEmpty() )
{
this.message_object.display( 'empty' );
return false;
}
if( !this.text_object.checkPattern( 'email' ) )
{
this.message_object.display( 'email' );
return false;
}
if( !this.text_object.checkPattern( 'pass' ) )
{
this.message_object.display( 'pass' );
return false;
}
}
/* new internal call_back */
AjaxNew.use( ajaxSerialize( this.form_element ) + '&ajax_type=ControlSignIn', ControlSignIn.invoke.callBack );
function callBack( server_response_text )
{
ajaxType( server_response_text, this.response_element, 'respond' );
}
/* Removed
Ajax.repeatUse( ajaxSerialize( this.form_element ) + '&ajax_type=ControlSignIn', ajaxTypeRespond, this.response_element );
*/
};
解決:
AjaxNew.use( ajaxSerialize( this.form_element ) + '&ajax_type=ControlSignIn', ControlSignIn.invoke.callBack );
var response_element = this.response_element;
function callBack( server_response_text )
{
ajaxType( server_response_text, response_element, 'respond' );
}