Compare Revisions

Getting Started

Change Revisions

Revision 101374:

Revision 101374 by Swamp Ig on

Revision 101375:

Revision 101375 by Mltorrefranca on

Title:
Getting Started
Getting Started
Slug:
Talk:AJAX/Getting_Started
Talk:AJAX/Getting_Started
Content:

Revision 101374
Revision 101375
tt120    <p>
121      <br>
122    </p>
123    <hr>
124    <p>
125      I have a way to get around the single http_request resource
 > and multiple requests to it. It still uses it as a global variab
 >le, but as an array. In a nutshell, it goes through the array and
 > finds an available resource. If there isn't one, it creates a ne
 >w one.
126    </p>
127    <pre>
128&lt;script type="text/javascript" language="javascript"&gt;
129 
130var xhr = new Array(); // ARRAY OF XML-HTTP REQUESTS
131var xi = new Array(0); // ARRAY OF XML-HTTP REQUEST INDEXES
132xi[0] = 1; // FIRST INDEX SET TO 1 MAKING IT AVAILABLE
133 
134function xhrRequest(type) {
135        if (!type) {
136                type = 'html';
137        }
138 
139        // xhrsend IS THE xi POSITION THAT GETS PASSED BACK
140        // INITIALIZED TO THE LENGTH OF THE ARRAY(LAST POSITION +
 > 1)
141        // IN CASE A FREE RESOURCE ISN'T FOUND IN THE LOOP
142        var xhrsend = xi.length; 
143        
144        // GO THROUGH AVAILABLE xi VALUES
145        for (var i=0; i&lt;xi.length; i++) {
146 
147                // IF IT'S 1 (AVAILABLE), ALLOCATE IT FOR USE AND
 > BREAK
148                if (xi[i] == 1) {
149                        xi[i] = 0;
150                        xhrsend = i;
151                        break;
152                }
153        }
154 
155        // SET TO 0 SINCE IT'S NOW ALLOCATED FOR USE
156        xi[xhrsend] = 0;
157 
158        // SET UP THE REQUEST
159        if (window.ActiveXObject) {
160                try {
161                        xhr[xhrsend] = new ActiveXObject("Msxml2.
 >XMLHTTP");
162                } catch (e) {
163                        try {
164                                xhr[xhrsend] = new ActiveXObject(
 >"Microsoft.XMLHTTP");
165                        } catch (e) {}
166                }
167        } else if (window.XMLHttpRequest) {
168                xhr[xhrsend] = new XMLHttpRequest();
169                if (xhr[xhrsend].overrideMimeType) {
170                        xhr[xhrsend].overrideMimeType('text/' + t
 >ype);
171                }
172        }
173        return (xhrsend);
174}
175 
176function fcn(url, reqType) {
177 
178        var xhri = xhrRequest('html');                  
179        xhr[xhri].open('GET', url, true);
180        xhr[xhri].onreadystatechange = function() {
181                if (xhr[xhri].readyState == 4 &amp;&amp; xhr[xhri
 >].status == 200) {
182                        alert(xhr[xhri].responseText);
183                        xi[xhri] = 1;
184                        xhr[xhri] = null;
185                }
186        };
187        xhr[xhri].send(null);
188}
189 
190function loadMulti() {
191        fcn('file1.html');
192        fcn('file2.html');
193        fcn('file3.html');
194}
195 
196window.onload = loadMulti();
197 
198 
199&lt;/script&gt;
200</pre>
201    <p>
202      I'm rewriting some of this from the functions I've been tes
 >ting, so something might break, but the general idea's there.
203    </p>
204    <p>
205      Here's a sample of it in use: http://www.digitalbonsai.com/
 >xhrmulti.php
206    </p>

Back to History