Показать сообщение отдельно
  #3 (permalink)  
Старый 04.08.2009, 20:53
Интересующийся
Отправить личное сообщение для Volk_88 Посмотреть профиль Найти все сообщения от Volk_88
 
Регистрация: 23.07.2009
Сообщений: 17

up, продолжу эту тему, что бы не плодить новые, написал обертку для xmlhttpraquest, но вот проблема, работает только для одного вызова, для следующих не пашет, а теперь подробнее:

function Ajax(onDone, onFail) { // Создание класса Ajax
  this.onDone = onDone;
  this.onFail = onFail;
  var _t = this;
  var request = null;
  try {
    request = new XMLHttpRequest();
  } catch (trymicrosoft) {
    try {
      request = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (othermicrosoft) {
      try {
        request = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (failed) {
        request = null;
      }
    }
  }
  var readystatechange = function(){
	if (request.readyState == 4){
		if (request.status == 200){
			if(_t.onDone){_t.onDone(request.responseXML, request.responseText);}
		}else{
			if(_t.onFail){alert('fail');}
		}
	}
  }
  this.post = function(url, query){
	query = query2url(query);
	request.open("POST", url, true);
    request.onreadystatechange = readystatechange;
    request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    request.send(query);
  };
  function query2url(qa){
	var query = [], q, i =0;

   for (var key in qa) {
     if (qa[key] === undefined || qa[key] === null || typeof(qa[key]) == 'function') continue;
     if (isArray(qa[key])) {
       for (var i = 0; i < qa[key].length; ++i) {
         if (qa[key][i] === undefined || qa[key][i] === null || typeof(qa[key][i]) == 'function') continue;
         query.push(escape(key) + '[]=' + escape(qa[key][i]));
       }
     } else {
       query.push(escape(key) + '=' + escape(qa[key]));
     }
   }
   return query.join('&');
  }
}


Первый код вызова:
comment = (function(){
	...
	var onDone = function(xml, text){
		...
	}
	var onFail = function(){
		...
	}
	
	var cajax = new Ajax(onDone, onFail);

	return{
		add: function(){
			act = 'add';
			setData();
			cajax.post(url, {'module':module,'mid':mid,'uid':uid,'text':text,'act':'add'});
		}
	}
}())

Второй код вызова, но тут не работает уже:
photo = (function(){
	...
	var onDone = function(xml, text){
		...
	}
	var onFail = function(){
		...
	}
	
	var pajax = new Ajax(onDone, onFail);

	return{
		next: function(){
			act = 'add';
			setData();
			pajax.post(url, {'module':module,'pid':pid,'uid':uid,'cat':cat,'act':'next'});
		}
	}
}())

Пробывал менять имена функций onDone, onFail на другие, что бы не пересекались с первыми, и все ровно не работает, на js я программирую неделю, так что я его еще плоховато знаю, подскажите, где я мог допустить ошибку, неправильно оформил обертку или не правильно использовал вызовы, или ... ?
Ответить с цитированием