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 я программирую неделю, так что я его еще плоховато знаю, подскажите, где я мог допустить ошибку, неправильно оформил обертку или не правильно использовал вызовы, или ... ?