Есть еще один вопрос для тех кто знаком с ООП в JS вообще и JsHttpRequest в частности
Уже сломал голову, ни как не могу придумать как же заставить работать JsHttpRequest в рамках объекта? Что я имею в виду.
Вот примерный код Код (JavaScript): скопировать код в буфер обмена
PHP:
function tree (contaner, objName)
{
this.req = new JsHttpRequest;
}
tree.prototype = {
// Тут всякие переменные, среди которых
req: null,
reload: function()
{
// Здесь вытасиваем из базы данные и передаем их функции построения дерева текущего объект
this.req.onreadystatechange = this.createTree;
this.req.open(null, 'load.htm', true);
this.req.caching = false;
this.req.send( { 'level': 1 } );
},
createTree: function()
{
// А вот сдесь вываливается ошибка что this.req пуст ???
if(this.req.readyState == 4)
{
var errors = this.req.responseText;
var arr = this.req.responseJS;
if(errors) return esa_error(errors);
alert(this.objName);
var str = this.treePrepare(arr);
$("#tree_loader").remove();
this.contaner.append(str);
}
},
}
tree = new esa_tree("treeIsHere", "tree");
tree.reload();
Вот все рабоатает до того, как функция tree.reload() передает в качестве колбэк функции JsHttpRequest метод this.createTree. И тут все. при вызове данного метода как будто все свойства объекта стираются. И this.req пустой и другие свойств, установленные до вызова так же недоступны. Как будто вызывается метод createTree не для оьъекта tree а для чего-то еще.
Помогите пожалуйста разобраться. Как сделать так чтобы все работало в рамках одного объекта ?
Уже не знаю с какой стороны подойти. Думаю уже плюнуть на объекты и пойти процедурным путем. Или вызывать JsHttpRequest через модальное окно (благо приложение для IE) но очень бы этого не хотелось.
На форуме dklab я задал этот вопрос, но там так долго отвечают, решил продублировать здесь. Думаю будет продуктивней. Извиняюсь если что не так.