ではAjax.use
、コールバック関数内でこれはコールバック関数を参照します。
ただし、コールバック定義の外側では、this
Ajax の特定のインスタンスが参照されます。
これが、別のメンバー メソッドからメンバー メソッドを呼び出す ためthis
に in Ajax.invoke
->を使用する方法です。this.use()
コールバック関数内でもメンバー メソッドを呼び出す必要があります。
推測して入れました
this.invoke()
しかし、コールバック関数にあるため、これが正しいオブジェクトを参照しているとは思いません。コールバック関数オブジェクトを参照していると思います。
/**
* Ajax
*/
var Ajax = ( function ()
{
var Ajax = function (element)
{
this.object = this.create();
};
Ajax.prototype.create = function()
{
var request;
try
{
request = new window.XMLHttpRequest();
}
catch( error )
{
try
{
request = new window.ActiveXObject( "Msxml2.XMLHTTP" );
}
catch( error )
{
try
{
request = new window.ActiveXObject( "Microsoft.XMLHTTP" );
}
catch( error )
{
request = false;
}
}
}
// alert("Object Created Successfully");
return request;
};
Ajax.prototype.use = function( param, ajax_func )
{
alert("Ajax.prototype.use Called");
this.object.open( "POST", Global.GATEWAY, true );
this.object.setRequestHeader( "Content-type", "application/x-www-form-urlencoded" );
this.object.setRequestHeader( "Content-length", param.length );
this.object.setRequestHeader( "Connection", "close" );
this.object.onreadystatechange = function()
{
if( this.readyState === 4 )
{
if( this.status === 200 )
{
ajax_func( this.responseText );
return true;
}
else
{
this.invoke( param, ajax_func );
return false;
}
}
};
this.object.send( param );
return true;
};
Ajax.prototype.invoke = function( param, ajax_func )
{
var state = false,
count = 1;
while( state === false && count <= 5 )
{
if( count !== 1 )
{
alert( 'Ajax Object Use Failed | Try Again ');
}
state = this.use( param, ajax_func );
count++;
}
return state;
};
return Ajax;
} () );