Тема: OOP in JavaScript
Показать сообщение отдельно
  #1 (permalink)  
Старый 18.01.2011, 02:21
Аватар для Slawaq
Профессор
Отправить личное сообщение для Slawaq Посмотреть профиль Найти все сообщения от Slawaq
 
Регистрация: 19.05.2010
Сообщений: 187

OOP in JavaScript
мои знания не позволили мне решить такую проблему, как написания объекта для взаимодействия с сервером через заголовки, а проблема у меня как раз возникла при написании функции onload, ну короче сами смотрите
var AJAX={
    getData:function(){
        this.open=function(type,value){
            var openXHR=new AJAX.createCONN(type,value);
            $catch(openXHR.getIdSpace(),this.gets)} 
        this.data='';
        this.onload=function(){};
        this.gets=function(n){this.data+=n;this.onload()} 
    },
    createCONN:function(head,value){
        this.xmlhttp=new XMLHttpRequest();
        var xmlhttp=this.xmlhttp; 
        var id=$space.length+1; 
        this.xmlhttp.onreadystatechange=function(){
            if (xmlhttp.readyState==4){
                $space[id]=decodeURI(xmlhttp.getResponseHeader('riseup').replace(/.*\:(.*)/,'$1'));
            }
        }
        this.xmlhttp.open("HEAD","route.php",true);
        this.xmlhttp.setRequestHeader('riseup',encodeURI(head)+':'+encodeURI(value));
        this.xmlhttp.send(null);
        this.getIdSpace=function(){return id};
    }
}
var $space=[];
function $catch(id,func){
    setTimeout(function(){
        if(!$space[id]){
        setTimeout(arguments.callee,0)
        }else{return func.call($space[id])
}},0)}
//---------------------------------------------------------------------
var testXHR=new AJAX.getData();
test.onload=function(){alert(testXHR.data)}
test.open('test','myDat');

после проверки ничего не происходит, а консоль хрома пишет:
"Uncaught TypeError: Object MyDat has no method 'onload'",
смотря на эту ошибку я недоумеваю, потому что не могу понять где у меня появляться "Object MyDat", но кажется проблема легко решается только не знаю как((

Последний раз редактировалось Slawaq, 18.01.2011 в 02:25.
Ответить с цитированием