|
1 module("ajax"); |
|
2 |
|
3 // Safari 3 randomly crashes when running these tests, |
|
4 // but only in the full suite - you can run just the Ajax |
|
5 // tests and they'll pass |
|
6 //if ( !jQuery.browser.safari ) { |
|
7 |
|
8 if ( !isLocal ) { |
|
9 |
|
10 test("$.ajax() - success callbacks", function() { |
|
11 expect( 8 ); |
|
12 |
|
13 $.ajaxSetup({ timeout: 0 }); |
|
14 |
|
15 stop(); |
|
16 |
|
17 setTimeout(function(){ |
|
18 $('#foo').ajaxStart(function(){ |
|
19 ok( true, "ajaxStart" ); |
|
20 }).ajaxStop(function(){ |
|
21 ok( true, "ajaxStop" ); |
|
22 start(); |
|
23 }).ajaxSend(function(){ |
|
24 ok( true, "ajaxSend" ); |
|
25 }).ajaxComplete(function(){ |
|
26 ok( true, "ajaxComplete" ); |
|
27 }).ajaxError(function(){ |
|
28 ok( false, "ajaxError" ); |
|
29 }).ajaxSuccess(function(){ |
|
30 ok( true, "ajaxSuccess" ); |
|
31 }); |
|
32 |
|
33 $.ajax({ |
|
34 url: url("data/name.html"), |
|
35 beforeSend: function(){ ok(true, "beforeSend"); }, |
|
36 success: function(){ ok(true, "success"); }, |
|
37 error: function(){ ok(false, "error"); }, |
|
38 complete: function(){ ok(true, "complete"); } |
|
39 }); |
|
40 }, 13); |
|
41 }); |
|
42 |
|
43 /* mozilla: the ajaxSuccess part fails intermittently on MacOSX |
|
44 |
|
45 test("$.ajax() - error callbacks", function() { |
|
46 expect( 7 ); |
|
47 stop(); |
|
48 |
|
49 $('#foo').ajaxStart(function(){ |
|
50 ok( true, "ajaxStart" ); |
|
51 }).ajaxStop(function(){ |
|
52 ok( true, "ajaxStop" ); |
|
53 start(); |
|
54 }).ajaxSend(function(){ |
|
55 ok( true, "ajaxSend" ); |
|
56 }).ajaxComplete(function(){ |
|
57 ok( true, "ajaxComplete" ); |
|
58 }).ajaxError(function(){ |
|
59 ok( true, "ajaxError" ); |
|
60 }).ajaxSuccess(function(){ |
|
61 ok( false, "ajaxSuccess" ); |
|
62 }) |
|
63 ; |
|
64 |
|
65 $.ajaxSetup({ timeout: 500 }); |
|
66 |
|
67 $.ajax({ |
|
68 url: url("data/name.php?wait=5"), |
|
69 beforeSend: function(){ ok(true, "beforeSend"); }, |
|
70 success: function(){ ok(false, "success"); }, |
|
71 error: function(){ ok(true, "error"); }, |
|
72 complete: function(){ ok(true, "complete"); } |
|
73 }); |
|
74 }); |
|
75 |
|
76 */ |
|
77 |
|
78 test("$.ajax() - disabled globals", function() { |
|
79 expect( 3 ); |
|
80 stop(); |
|
81 |
|
82 $('#foo').ajaxStart(function(){ |
|
83 ok( false, "ajaxStart" ); |
|
84 }).ajaxStop(function(){ |
|
85 ok( false, "ajaxStop" ); |
|
86 }).ajaxSend(function(){ |
|
87 ok( false, "ajaxSend" ); |
|
88 }).ajaxComplete(function(){ |
|
89 ok( false, "ajaxComplete" ); |
|
90 }).ajaxError(function(){ |
|
91 ok( false, "ajaxError" ); |
|
92 }).ajaxSuccess(function(){ |
|
93 ok( false, "ajaxSuccess" ); |
|
94 }); |
|
95 |
|
96 $.ajax({ |
|
97 global: false, |
|
98 url: url("data/name.html"), |
|
99 beforeSend: function(){ ok(true, "beforeSend"); }, |
|
100 success: function(){ ok(true, "success"); }, |
|
101 error: function(){ ok(false, "error"); }, |
|
102 complete: function(){ |
|
103 ok(true, "complete"); |
|
104 setTimeout(function(){ start(); }, 13); |
|
105 } |
|
106 }); |
|
107 }); |
|
108 |
|
109 test("$.ajax - xml: non-namespace elements inside namespaced elements", function() { |
|
110 expect(3); |
|
111 stop(); |
|
112 $.ajax({ |
|
113 url: url("data/with_fries.xml"), |
|
114 dataType: "xml", |
|
115 success: function(resp) { |
|
116 equals( $("properties", resp).length, 1, 'properties in responseXML' ); |
|
117 equals( $("jsconf", resp).length, 1, 'jsconf in responseXML' ); |
|
118 equals( $("thing", resp).length, 2, 'things in responseXML' ); |
|
119 start(); |
|
120 } |
|
121 }); |
|
122 }); |
|
123 |
|
124 test("$.ajax - beforeSend", function() { |
|
125 expect(1); |
|
126 stop(); |
|
127 |
|
128 var check = false; |
|
129 |
|
130 $.ajaxSetup({ timeout: 0 }); |
|
131 |
|
132 $.ajax({ |
|
133 url: url("data/name.html"), |
|
134 beforeSend: function(xml) { |
|
135 check = true; |
|
136 }, |
|
137 success: function(data) { |
|
138 ok( check, "check beforeSend was executed" ); |
|
139 start(); |
|
140 } |
|
141 }); |
|
142 }); |
|
143 |
|
144 test("$.ajax - beforeSend, cancel request (#2688)", function() { |
|
145 expect(2); |
|
146 var request = $.ajax({ |
|
147 url: url("data/name.html"), |
|
148 beforeSend: function() { |
|
149 ok( true, "beforeSend got called, canceling" ); |
|
150 return false; |
|
151 }, |
|
152 success: function() { |
|
153 ok( false, "request didn't get canceled" ); |
|
154 }, |
|
155 complete: function() { |
|
156 ok( false, "request didn't get canceled" ); |
|
157 }, |
|
158 error: function() { |
|
159 ok( false, "request didn't get canceled" ); |
|
160 } |
|
161 }); |
|
162 ok( request === false, "canceled request must return false instead of XMLHttpRequest instance" ); |
|
163 }); |
|
164 |
|
165 var foobar; |
|
166 |
|
167 test("$.ajax - dataType html", function() { |
|
168 expect(5); |
|
169 stop(); |
|
170 |
|
171 foobar = null; |
|
172 testFoo = undefined; |
|
173 |
|
174 var verifyEvaluation = function() { |
|
175 equals( testFoo, "foo", 'Check if script was evaluated for datatype html' ); |
|
176 equals( foobar, "bar", 'Check if script src was evaluated for datatype html' ); |
|
177 start(); |
|
178 }; |
|
179 |
|
180 $.ajax({ |
|
181 dataType: "html", |
|
182 url: url("data/test.html"), |
|
183 success: function(data) { |
|
184 $("#ap").html(data); |
|
185 ok( data.match(/^html text/), 'Check content for datatype html' ); |
|
186 setTimeout(verifyEvaluation, 600); |
|
187 } |
|
188 }); |
|
189 }); |
|
190 |
|
191 test("serialize()", function() { |
|
192 expect(6); |
|
193 |
|
194 equals( $('#form').serialize(), |
|
195 "action=Test&radio2=on&check=on&hidden=&foo%5Bbar%5D=&name=name&select1=&select2=3&select3=1&select3=2", |
|
196 'Check form serialization as query string'); |
|
197 |
|
198 equals( $('#form :input').serialize(), |
|
199 "action=Test&radio2=on&check=on&hidden=&foo%5Bbar%5D=&name=name&select1=&select2=3&select3=1&select3=2", |
|
200 'Check input serialization as query string'); |
|
201 |
|
202 equals( $('#testForm').serialize(), |
|
203 'T3=%3F%0AZ&H1=x&H2=&PWD=&T1=&T2=YES&My+Name=me&S1=abc&S3=YES&S4=', |
|
204 'Check form serialization as query string'); |
|
205 |
|
206 equals( $('#testForm :input').serialize(), |
|
207 'T3=%3F%0AZ&H1=x&H2=&PWD=&T1=&T2=YES&My+Name=me&S1=abc&S3=YES&S4=', |
|
208 'Check input serialization as query string'); |
|
209 |
|
210 equals( $('#form, #testForm').serialize(), |
|
211 "action=Test&radio2=on&check=on&hidden=&foo%5Bbar%5D=&name=name&select1=&select2=3&select3=1&select3=2&T3=%3F%0AZ&H1=x&H2=&PWD=&T1=&T2=YES&My+Name=me&S1=abc&S3=YES&S4=", |
|
212 'Multiple form serialization as query string'); |
|
213 |
|
214 equals( $('#form, #testForm :input').serialize(), |
|
215 "action=Test&radio2=on&check=on&hidden=&foo%5Bbar%5D=&name=name&select1=&select2=3&select3=1&select3=2&T3=%3F%0AZ&H1=x&H2=&PWD=&T1=&T2=YES&My+Name=me&S1=abc&S3=YES&S4=", |
|
216 'Mixed form/input serialization as query string'); |
|
217 }); |
|
218 |
|
219 test("$.param()", function() { |
|
220 expect(4); |
|
221 var params = {foo:"bar", baz:42, quux:"All your base are belong to us"}; |
|
222 equals( $.param(params), "foo=bar&baz=42&quux=All+your+base+are+belong+to+us", "simple" ); |
|
223 |
|
224 params = {someName: [1, 2, 3], regularThing: "blah" }; |
|
225 equals( $.param(params), "someName=1&someName=2&someName=3®ularThing=blah", "with array" ); |
|
226 |
|
227 params = {"foo[]":["baz", 42, "All your base are belong to us"]}; |
|
228 equals( $.param(params), "foo%5B%5D=baz&foo%5B%5D=42&foo%5B%5D=All+your+base+are+belong+to+us", "more array" ); |
|
229 |
|
230 params = {"foo[bar]":"baz", "foo[beep]":42, "foo[quux]":"All your base are belong to us"}; |
|
231 equals( $.param(params), "foo%5Bbar%5D=baz&foo%5Bbeep%5D=42&foo%5Bquux%5D=All+your+base+are+belong+to+us", "even more arrays" ); |
|
232 }); |
|
233 |
|
234 test("synchronous request", function() { |
|
235 expect(1); |
|
236 ok( /^{ "data"/.test( $.ajax({url: url("data/json_obj.js"), async: false}).responseText ), "check returned text" ); |
|
237 }); |
|
238 |
|
239 test("synchronous request with callbacks", function() { |
|
240 expect(2); |
|
241 var result; |
|
242 $.ajax({url: url("data/json_obj.js"), async: false, success: function(data) { ok(true, "success callback executed"); result = data; } }); |
|
243 ok( /^{ "data"/.test( result ), "check returned text" ); |
|
244 }); |
|
245 |
|
246 test("pass-through request object", function() { |
|
247 expect(8); |
|
248 stop(true); |
|
249 |
|
250 var target = "data/name.html"; |
|
251 var successCount = 0; |
|
252 var errorCount = 0; |
|
253 var errorEx = ""; |
|
254 var success = function() { |
|
255 successCount++; |
|
256 }; |
|
257 $("#foo").ajaxError(function (e, xml, s, ex) { |
|
258 errorCount++; |
|
259 errorEx += ": " + xml.status; |
|
260 }); |
|
261 $("#foo").one('ajaxStop', function () { |
|
262 equals(successCount, 5, "Check all ajax calls successful"); |
|
263 equals(errorCount, 0, "Check no ajax errors (status" + errorEx + ")"); |
|
264 $("#foo").unbind('ajaxError'); |
|
265 start(); |
|
266 }); |
|
267 |
|
268 ok( $.get(url(target), success), "get" ); |
|
269 ok( $.post(url(target), success), "post" ); |
|
270 ok( $.getScript(url("data/test.js"), success), "script" ); |
|
271 ok( $.getJSON(url("data/json_obj.js"), success), "json" ); |
|
272 ok( $.ajax({url: url(target), success: success}), "generic" ); |
|
273 }); |
|
274 |
|
275 /* mozilla: php not currently supported in mochitest (08/08/2008) |
|
276 test("ajax cache", function () { |
|
277 expect(18); |
|
278 stop(); |
|
279 |
|
280 var count = 0; |
|
281 |
|
282 $("#firstp").bind("ajaxSuccess", function (e, xml, s) { |
|
283 var re = /_=(.*?)(&|$)/g; |
|
284 var oldOne = null; |
|
285 for (var i = 0; i < 6; i++) { |
|
286 var ret = re.exec(s.url); |
|
287 if (!ret) { |
|
288 break; |
|
289 } |
|
290 oldOne = ret[1]; |
|
291 } |
|
292 equals(i, 1, "Test to make sure only one 'no-cache' parameter is there"); |
|
293 ok(oldOne != "tobereplaced555", "Test to be sure parameter (if it was there) was replaced"); |
|
294 if(++count == 6) |
|
295 start(); |
|
296 }); |
|
297 |
|
298 ok( $.ajax({url: "data/text.php", cache:false}), "test with no parameters" ); |
|
299 ok( $.ajax({url: "data/text.php?pizza=true", cache:false}), "test with 1 parameter" ); |
|
300 ok( $.ajax({url: "data/text.php?_=tobereplaced555", cache:false}), "test with _= parameter" ); |
|
301 ok( $.ajax({url: "data/text.php?pizza=true&_=tobereplaced555", cache:false}), "test with 1 parameter plus _= one" ); |
|
302 ok( $.ajax({url: "data/text.php?_=tobereplaced555&tv=false", cache:false}), "test with 1 parameter plus _= one before it" ); |
|
303 ok( $.ajax({url: "data/text.php?name=David&_=tobereplaced555&washere=true", cache:false}), "test with 2 parameters surrounding _= one" ); |
|
304 }); |
|
305 */ |
|
306 |
|
307 test("global ajaxSettings", function() { |
|
308 expect(2); |
|
309 |
|
310 var tmp = jQuery.extend({}, jQuery.ajaxSettings); |
|
311 var orig = { url: "data/with_fries.xml" }; |
|
312 var t; |
|
313 |
|
314 $.ajaxSetup({ data: {foo: 'bar', bar: 'BAR'} }); |
|
315 |
|
316 t = jQuery.extend({}, orig); |
|
317 t.data = {}; |
|
318 $.ajax(t); |
|
319 ok( t.url.indexOf('foo') > -1 && t.url.indexOf('bar') > -1, "Check extending {}" ); |
|
320 |
|
321 t = jQuery.extend({}, orig); |
|
322 t.data = { zoo: 'a', ping: 'b' }; |
|
323 $.ajax(t); |
|
324 ok( t.url.indexOf('ping') > -1 && t.url.indexOf('zoo') > -1 && t.url.indexOf('foo') > -1 && t.url.indexOf('bar') > -1, "Check extending { zoo: 'a', ping: 'b' }" ); |
|
325 |
|
326 jQuery.ajaxSettings = tmp; |
|
327 }); |
|
328 |
|
329 test("load(String)", function() { |
|
330 expect(1); |
|
331 stop(true); // check if load can be called with only url |
|
332 $('#first').load("data/name.html", start); |
|
333 }); |
|
334 |
|
335 test("load('url selector')", function() { |
|
336 expect(1); |
|
337 stop(true); // check if load can be called with only url |
|
338 $('#first').load("data/test3.html div.user", function(){ |
|
339 equals( $(this).children("div").length, 2, "Verify that specific elements were injected" ); |
|
340 start(); |
|
341 }); |
|
342 }); |
|
343 |
|
344 test("load(String, Function) with ajaxSetup on dataType json, see #2046", function() { |
|
345 expect(1); |
|
346 stop(); |
|
347 $.ajaxSetup({ dataType: "json" }); |
|
348 $("#first").ajaxComplete(function (e, xml, s) { |
|
349 equals( s.dataType, "html", "Verify the load() dataType was html" ); |
|
350 $("#first").unbind("ajaxComplete"); |
|
351 $.ajaxSetup({ dataType: "" }); |
|
352 start(); |
|
353 }); |
|
354 $('#first').load("data/test3.html"); |
|
355 }); |
|
356 |
|
357 test("load(String, Function) - simple: inject text into DOM", function() { |
|
358 expect(2); |
|
359 stop(); |
|
360 $('#first').load(url("data/name.html"), function() { |
|
361 ok( /^ERROR/.test($('#first').text()), 'Check if content was injected into the DOM' ); |
|
362 start(); |
|
363 }); |
|
364 }); |
|
365 |
|
366 test("load(String, Function) - check scripts", function() { |
|
367 expect(7); |
|
368 stop(); |
|
369 window.testFoo = undefined; |
|
370 window.foobar = null; |
|
371 var verifyEvaluation = function() { |
|
372 equals( foobar, "bar", 'Check if script src was evaluated after load' ); |
|
373 equals( $('#ap').html(), 'bar', 'Check if script evaluation has modified DOM'); |
|
374 start(); |
|
375 }; |
|
376 $('#first').load(url('data/test.html'), function() { |
|
377 ok( $('#first').html().match(/^html text/), 'Check content after loading html' ); |
|
378 equals( $('#foo').html(), 'foo', 'Check if script evaluation has modified DOM'); |
|
379 equals( testFoo, "foo", 'Check if script was evaluated after load' ); |
|
380 setTimeout(verifyEvaluation, 600); |
|
381 }); |
|
382 }); |
|
383 |
|
384 test("load(String, Function) - check file with only a script tag", function() { |
|
385 expect(3); |
|
386 stop(); |
|
387 testFoo = undefined; |
|
388 $('#first').load(url('data/test2.html'), function() { |
|
389 equals( $('#foo').html(), 'foo', 'Check if script evaluation has modified DOM'); |
|
390 equals( testFoo, "foo", 'Check if script was evaluated after load' ); |
|
391 start(); |
|
392 }); |
|
393 }); |
|
394 |
|
395 test("$.get(String, Hash, Function) - parse xml and use text() on nodes", function() { |
|
396 expect(2); |
|
397 stop(); |
|
398 $.get(url('data/dashboard.xml'), function(xml) { |
|
399 var content = []; |
|
400 $('tab', xml).each(function() { |
|
401 content.push($(this).text()); |
|
402 }); |
|
403 equals( content[0], 'blabla', 'Check first tab'); |
|
404 equals( content[1], 'blublu', 'Check second tab'); |
|
405 start(); |
|
406 }); |
|
407 }); |
|
408 |
|
409 test("$.getScript(String, Function) - with callback", function() { |
|
410 expect(2); |
|
411 stop(); |
|
412 window.foobar = null; |
|
413 $.getScript(url("data/test.js"), function() { |
|
414 equals( foobar, "bar", 'Check if script was evaluated' ); |
|
415 setTimeout(start, 100); |
|
416 }); |
|
417 }); |
|
418 |
|
419 test("$.getScript(String, Function) - no callback", function() { |
|
420 expect(1); |
|
421 stop(true); |
|
422 $.getScript(url("data/test.js"), start); |
|
423 }); |
|
424 |
|
425 /* mozilla: Tests using php scripts not currently supported (06/26/2008) |
|
426 |
|
427 test("$.ajax() - JSONP, Local", function() { |
|
428 expect(7); |
|
429 |
|
430 var count = 0; |
|
431 function plus(){ if ( ++count == 7 ) start(); } |
|
432 |
|
433 stop(); |
|
434 |
|
435 $.ajax({ |
|
436 url: "data/jsonp.php", |
|
437 dataType: "jsonp", |
|
438 success: function(data){ |
|
439 ok( data.data, "JSON results returned (GET, no callback)" ); |
|
440 plus(); |
|
441 }, |
|
442 error: function(data){ |
|
443 ok( false, "Ajax error JSON (GET, no callback)" ); |
|
444 plus(); |
|
445 } |
|
446 }); |
|
447 |
|
448 $.ajax({ |
|
449 url: "data/jsonp.php?callback=?", |
|
450 dataType: "jsonp", |
|
451 success: function(data){ |
|
452 ok( data.data, "JSON results returned (GET, url callback)" ); |
|
453 plus(); |
|
454 }, |
|
455 error: function(data){ |
|
456 ok( false, "Ajax error JSON (GET, url callback)" ); |
|
457 plus(); |
|
458 } |
|
459 }); |
|
460 |
|
461 $.ajax({ |
|
462 url: "data/jsonp.php", |
|
463 dataType: "jsonp", |
|
464 data: "callback=?", |
|
465 success: function(data){ |
|
466 ok( data.data, "JSON results returned (GET, data callback)" ); |
|
467 plus(); |
|
468 }, |
|
469 error: function(data){ |
|
470 ok( false, "Ajax error JSON (GET, data callback)" ); |
|
471 plus(); |
|
472 } |
|
473 }); |
|
474 |
|
475 $.ajax({ |
|
476 url: "data/jsonp.php", |
|
477 dataType: "jsonp", |
|
478 jsonp: "callback", |
|
479 success: function(data){ |
|
480 ok( data.data, "JSON results returned (GET, data obj callback)" ); |
|
481 plus(); |
|
482 }, |
|
483 error: function(data){ |
|
484 ok( false, "Ajax error JSON (GET, data obj callback)" ); |
|
485 plus(); |
|
486 } |
|
487 }); |
|
488 |
|
489 $.ajax({ |
|
490 type: "POST", |
|
491 url: "data/jsonp.php", |
|
492 dataType: "jsonp", |
|
493 success: function(data){ |
|
494 ok( data.data, "JSON results returned (POST, no callback)" ); |
|
495 plus(); |
|
496 }, |
|
497 error: function(data){ |
|
498 ok( false, "Ajax error JSON (GET, data obj callback)" ); |
|
499 plus(); |
|
500 } |
|
501 }); |
|
502 |
|
503 $.ajax({ |
|
504 type: "POST", |
|
505 url: "data/jsonp.php", |
|
506 data: "callback=?", |
|
507 dataType: "jsonp", |
|
508 success: function(data){ |
|
509 ok( data.data, "JSON results returned (POST, data callback)" ); |
|
510 plus(); |
|
511 }, |
|
512 error: function(data){ |
|
513 ok( false, "Ajax error JSON (POST, data callback)" ); |
|
514 plus(); |
|
515 } |
|
516 }); |
|
517 |
|
518 $.ajax({ |
|
519 type: "POST", |
|
520 url: "data/jsonp.php", |
|
521 jsonp: "callback", |
|
522 dataType: "jsonp", |
|
523 success: function(data){ |
|
524 ok( data.data, "JSON results returned (POST, data obj callback)" ); |
|
525 plus(); |
|
526 }, |
|
527 error: function(data){ |
|
528 ok( false, "Ajax error JSON (POST, data obj callback)" ); |
|
529 plus(); |
|
530 } |
|
531 }); |
|
532 }); |
|
533 |
|
534 test("$.ajax() - JSONP, Remote", function() { |
|
535 expect(4); |
|
536 |
|
537 var count = 0; |
|
538 function plus(){ if ( ++count == 4 ) start(); } |
|
539 |
|
540 var base = window.location.href.replace(/\?.*$/, ""); |
|
541 |
|
542 stop(); |
|
543 |
|
544 $.ajax({ |
|
545 url: base + "data/jsonp.php", |
|
546 dataType: "jsonp", |
|
547 success: function(data){ |
|
548 ok( data.data, "JSON results returned (GET, no callback)" ); |
|
549 plus(); |
|
550 }, |
|
551 error: function(data){ |
|
552 ok( false, "Ajax error JSON (GET, no callback)" ); |
|
553 plus(); |
|
554 } |
|
555 }); |
|
556 |
|
557 $.ajax({ |
|
558 url: base + "data/jsonp.php?callback=?", |
|
559 dataType: "jsonp", |
|
560 success: function(data){ |
|
561 ok( data.data, "JSON results returned (GET, url callback)" ); |
|
562 plus(); |
|
563 }, |
|
564 error: function(data){ |
|
565 ok( false, "Ajax error JSON (GET, url callback)" ); |
|
566 plus(); |
|
567 } |
|
568 }); |
|
569 |
|
570 $.ajax({ |
|
571 url: base + "data/jsonp.php", |
|
572 dataType: "jsonp", |
|
573 data: "callback=?", |
|
574 success: function(data){ |
|
575 ok( data.data, "JSON results returned (GET, data callback)" ); |
|
576 plus(); |
|
577 }, |
|
578 error: function(data){ |
|
579 ok( false, "Ajax error JSON (GET, data callback)" ); |
|
580 plus(); |
|
581 } |
|
582 }); |
|
583 |
|
584 $.ajax({ |
|
585 url: base + "data/jsonp.php", |
|
586 dataType: "jsonp", |
|
587 jsonp: "callback", |
|
588 success: function(data){ |
|
589 ok( data.data, "JSON results returned (GET, data obj callback)" ); |
|
590 plus(); |
|
591 }, |
|
592 error: function(data){ |
|
593 ok( false, "Ajax error JSON (GET, data obj callback)" ); |
|
594 plus(); |
|
595 } |
|
596 }); |
|
597 }); |
|
598 |
|
599 test("$.ajax() - script, Remote", function() { |
|
600 expect(2); |
|
601 |
|
602 var base = window.location.href.replace(/\?.*$/, ""); |
|
603 |
|
604 stop(); |
|
605 |
|
606 window.foobar = null; |
|
607 $.ajax({ |
|
608 url: base + "data/test.js", |
|
609 dataType: "script", |
|
610 success: function(data){ |
|
611 ok( foobar, "Script results returned (GET, no callback)" ); |
|
612 start(); |
|
613 } |
|
614 }); |
|
615 }); |
|
616 |
|
617 test("$.ajax() - script, Remote with POST", function() { |
|
618 expect(3); |
|
619 |
|
620 var base = window.location.href.replace(/\?.*$/, ""); |
|
621 |
|
622 stop(); |
|
623 |
|
624 window.foobar = null; |
|
625 $.ajax({ |
|
626 url: base + "data/test.js", |
|
627 type: "POST", |
|
628 dataType: "script", |
|
629 success: function(data, status){ |
|
630 ok( foobar, "Script results returned (GET, no callback)" ); |
|
631 equals( status, "success", "Script results returned (GET, no callback)" ); |
|
632 start(); |
|
633 } |
|
634 }); |
|
635 }); |
|
636 |
|
637 test("$.ajax() - script, Remote with scheme-less URL", function() { |
|
638 expect(2); |
|
639 |
|
640 var base = window.location.href.replace(/\?.*$/, ""); |
|
641 base = base.replace(/^.*?\/\//, "//"); |
|
642 |
|
643 stop(); |
|
644 |
|
645 window.foobar = null; |
|
646 $.ajax({ |
|
647 url: base + "data/test.js", |
|
648 dataType: "script", |
|
649 success: function(data){ |
|
650 ok( foobar, "Script results returned (GET, no callback)" ); |
|
651 start(); |
|
652 } |
|
653 }); |
|
654 }); |
|
655 |
|
656 test("$.getJSON(String, Hash, Function) - JSON array", function() { |
|
657 expect(4); |
|
658 stop(); |
|
659 $.getJSON(url("data/json.php"), {json: "array"}, function(json) { |
|
660 equals( json[0].name, 'John', 'Check JSON: first, name' ); |
|
661 equals( json[0].age, 21, 'Check JSON: first, age' ); |
|
662 equals( json[1].name, 'Peter', 'Check JSON: second, name' ); |
|
663 equals( json[1].age, 25, 'Check JSON: second, age' ); |
|
664 start(); |
|
665 }); |
|
666 }); |
|
667 |
|
668 test("$.getJSON(String, Function) - JSON object", function() { |
|
669 expect(2); |
|
670 stop(); |
|
671 $.getJSON(url("data/json.php"), function(json) { |
|
672 equals( json.data.lang, 'en', 'Check JSON: lang' ); |
|
673 equals( json.data.length, 25, 'Check JSON: length' ); |
|
674 start(); |
|
675 }); |
|
676 }); |
|
677 |
|
678 test("$.getJSON(String, Function) - JSON object with absolute url to local content", function() { |
|
679 expect(2); |
|
680 |
|
681 var base = window.location.href.replace(/\?.*$/, ""); |
|
682 |
|
683 stop(); |
|
684 $.getJSON(url(base + "data/json.php"), function(json) { |
|
685 equals( json.data.lang, 'en', 'Check JSON: lang' ); |
|
686 equals( json.data.length, 25, 'Check JSON: length' ); |
|
687 start(); |
|
688 }); |
|
689 }); |
|
690 |
|
691 test("$.post(String, Hash, Function) - simple with xml", function() { |
|
692 expect(4); |
|
693 stop(); |
|
694 $.post(url("data/name.php"), {xml: "5-2"}, function(xml){ |
|
695 $('math', xml).each(function() { |
|
696 equals( $('calculation', this).text(), '5-2', 'Check for XML' ); |
|
697 equals( $('result', this).text(), '3', 'Check for XML' ); |
|
698 }); |
|
699 }); |
|
700 |
|
701 $.post(url("data/name.php?xml=5-2"), {}, function(xml){ |
|
702 $('math', xml).each(function() { |
|
703 equals( $('calculation', this).text(), '5-2', 'Check for XML' ); |
|
704 equals( $('result', this).text(), '3', 'Check for XML' ); |
|
705 }); |
|
706 start(); |
|
707 }); |
|
708 }); |
|
709 |
|
710 test("$.ajaxSetup({timeout: Number}) - with global timeout", function() { |
|
711 stop(); |
|
712 |
|
713 var passed = 0; |
|
714 |
|
715 $.ajaxSetup({timeout: 1000}); |
|
716 |
|
717 var pass = function() { |
|
718 passed++; |
|
719 if ( passed == 2 ) { |
|
720 ok( true, 'Check local and global callbacks after timeout' ); |
|
721 $('#main').unbind("ajaxError"); |
|
722 start(); |
|
723 } |
|
724 }; |
|
725 |
|
726 var fail = function(a,b,c) { |
|
727 ok( false, 'Check for timeout failed ' + a + ' ' + b ); |
|
728 start(); |
|
729 }; |
|
730 |
|
731 $('#main').ajaxError(pass); |
|
732 |
|
733 $.ajax({ |
|
734 type: "GET", |
|
735 url: url("data/name.php?wait=5"), |
|
736 error: pass, |
|
737 success: fail |
|
738 }); |
|
739 |
|
740 // reset timeout |
|
741 $.ajaxSetup({timeout: 0}); |
|
742 }); |
|
743 |
|
744 test("$.ajaxSetup({timeout: Number}) with localtimeout", function() { |
|
745 stop(); |
|
746 $.ajaxSetup({timeout: 50}); |
|
747 |
|
748 $.ajax({ |
|
749 type: "GET", |
|
750 timeout: 5000, |
|
751 url: url("data/name.php?wait=1"), |
|
752 error: function() { |
|
753 ok( false, 'Check for local timeout failed' ); |
|
754 start(); |
|
755 }, |
|
756 success: function() { |
|
757 ok( true, 'Check for local timeout' ); |
|
758 start(); |
|
759 } |
|
760 }); |
|
761 |
|
762 // reset timeout |
|
763 $.ajaxSetup({timeout: 0}); |
|
764 }); |
|
765 |
|
766 test("$.ajax - simple get", function() { |
|
767 expect(1); |
|
768 stop(); |
|
769 $.ajax({ |
|
770 type: "GET", |
|
771 url: url("data/name.php?name=foo"), |
|
772 success: function(msg){ |
|
773 equals( msg, 'bar', 'Check for GET' ); |
|
774 start(); |
|
775 } |
|
776 }); |
|
777 }); |
|
778 |
|
779 test("$.ajax - simple post", function() { |
|
780 expect(1); |
|
781 stop(); |
|
782 $.ajax({ |
|
783 type: "POST", |
|
784 url: url("data/name.php"), |
|
785 data: "name=peter", |
|
786 success: function(msg){ |
|
787 equals( msg, 'pan', 'Check for POST' ); |
|
788 start(); |
|
789 } |
|
790 }); |
|
791 }); |
|
792 |
|
793 test("ajaxSetup()", function() { |
|
794 expect(1); |
|
795 stop(); |
|
796 $.ajaxSetup({ |
|
797 url: url("data/name.php?name=foo"), |
|
798 success: function(msg){ |
|
799 equals( msg, 'bar', 'Check for GET' ); |
|
800 start(); |
|
801 } |
|
802 }); |
|
803 $.ajax(); |
|
804 }); |
|
805 |
|
806 test("custom timeout does not set error message when timeout occurs, see #970", function() { |
|
807 stop(); |
|
808 $.ajax({ |
|
809 url: "data/name.php?wait=10", |
|
810 timeout: 500, |
|
811 error: function(request, status) { |
|
812 ok( status != null, "status shouldn't be null in error handler" ); |
|
813 equals( "timeout", status ); |
|
814 start(); |
|
815 } |
|
816 }); |
|
817 }); |
|
818 |
|
819 test("data option: evaluate function values (#2806)", function() { |
|
820 stop(); |
|
821 $.ajax({ |
|
822 url: "data/echoQuery.php", |
|
823 data: { |
|
824 key: function() { |
|
825 return "value"; |
|
826 } |
|
827 }, |
|
828 success: function(result) { |
|
829 equals( result, "key=value" ); |
|
830 start(); |
|
831 } |
|
832 }) |
|
833 }); |
|
834 */ |
|
835 } |
|
836 |
|
837 //} |