ugrás a tartalomhoz

Saját ajax-motor hiba

xmouse · 2008. Már. 23. (V), 12.42
Sziasztok!

Összedobtam egy kis ajax-motort, de van vele egy problémám. Amikor egyszerre vagy egymás után több kérelmet indítok (különböző példányokból), akkor csak az egyik tér vissza eredménnyel, tehát valahogy összeakadnak.
Arra gondoltam, hogy a request-et az objektum sajátjává kéne tenni, de nem tudom, hogy lehet ezt megtenni. Tudna valaki segíteni?
  1. ajax = function(){  
  2.       
  3.     this.makeRequest = function(method, url, callbackFunction, data){  
  4.         request = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("MSXML2.XMLHTTP.3.0");  
  5.         request.open(method, url, true);  
  6.         request.setRequestHeader("Content-Type""application/x-www-form-urlencoded");  
  7.         request.onreadystatechange = function(){  
  8.             if (request.readyState == 4 && request.status == 200) {  
  9.                 callbackFunction();  
  10.             }  
  11.         }  
  12.         request.send(data);  
  13.     }  
  14.       
  15.     this.getResponse = function(){  
  16.         if (request.responseText) {  
  17.             return (request.responseText);  
  18.         }  
  19.         else {  
  20.             return (request.responseXML);  
  21.         }  
  22.     }  
  23.       
  24. }  
Köszi:

xmouse
 
1

nem teljesen világos, hogy mit akarsz

toxin · 2008. Már. 23. (V), 14.35
ha singelton-t, nem akarod példányosítani az ajax-ot akkor
  1. var ajax = {                                  
  2.                 makeRequest : function(method, url, callbackFunction, data){  
  3.                     var request = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("MSXML2.XMLHTTP.3.0");    
  4.                     request.open(method, url, true);  
  5.                     request.setRequestHeader("Content-Type""application/x-www-form-urlencoded");  
  6.                     var self = this;                      
  7.                     request.onreadystatechange = function(){  
  8.                         if (request.readyState == 4 && request.status == 200) {  
  9.                            callbackFunction(self.getResponse(request));  
  10.                         }  
  11.                     }  
  12.                     request.send(data);  
  13.                 },  
  14.                                   
  15.                 getResponse : function(response){  
  16.                     if (response.responseText) {  
  17.                         return (response.responseText);  
  18.                     }  
  19.                     else {  
  20.                         return (response.responseXML);  
  21.                     }  
  22.                 }  
  23.                   
  24.             }  
  25.                       
  26.             ajax.makeRequest("POST","1.txt",function(response){  
  27.                     console.log(response);  
  28.             });  
  29.             ajax.makeRequest("POST","2.txt",function(response){  
  30.                     console.log(response);  
  31.             });  
ha igen akkor pl.
  1. var Ajax = function(){  
  2.                                   
  3.                 this.makeRequest = function(method, url, callbackFunction, data){  
  4.                     this.request = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("MSXML2.XMLHTTP.3.0");    
  5.                     this.request.open(method, url, true);  
  6.                     this.request.setRequestHeader("Content-Type""application/x-www-form-urlencoded");  
  7.                     var self = this;                      
  8.                     this.request.onreadystatechange = function(){  
  9.                         if (self.request.readyState == 4 && self.request.status == 200) {  
  10.                            callbackFunction();  
  11.                         }  
  12.                     }  
  13.                     this.request.send(data);  
  14.                 }  
  15.                                   
  16.                 this.getResponse = function(){  
  17.                     if (this.request.responseText) {  
  18.                         return (this.request.responseText);  
  19.                     }  
  20.                     else {  
  21.                         return (this.request.responseXML);  
  22.                     }  
  23.                 }  
  24.                   
  25.             }  
  26.               
  27.             var ajax1 = new Ajax;             
  28.             ajax1.makeRequest("POST","1.txt",function(request){  
  29.                     console.log(ajax1.getResponse());  
  30.             });  
  31.             var ajax2 = new Ajax;  
  32.             ajax2.makeRequest("POST","2.txt",function(request){  
  33.                     console.log(ajax2.getResponse());  
  34.             })  
  35.               
magyarán az volt a baj, hogy nálad a
request = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("MSXML2.XMLHTTP.3.0");


a globális névtérbe jött létre

üdv Csaba
2

működik

xmouse · 2008. Már. 23. (V), 17.38
Nagyon köszönöm! Már 3 napja törtem rajta a fejem.
A második változatra gondoltam.
Köszi.