ajax.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. var ajax = {};
  2. ajax.create = function() {
  3. if(typeof XMLHttpRequest !== 'undefined') {
  4. return new XMLHttpRequest();
  5. };
  6. var versions = [
  7. "MSXML2.XmlHttp.6.0",
  8. "MSXML2.XmlHttp.5.0",
  9. "MSXML2.XmlHttp.4.0",
  10. "MSXML2.XmlHttp.3.0",
  11. "MSXML2.XmlHttp.2.0",
  12. "Microsoft.XmlHttp"
  13. ];
  14. var xhr;
  15. for(var i = 0; i < versions.length; i++) {
  16. try {
  17. xhr = new ActiveXObject(versions[i]);
  18. break;
  19. } catch(e) {
  20. // Silent
  21. };
  22. };
  23. return xhr;
  24. };
  25. ajax.send = function(url, callback, method, data, async) {
  26. if(async === undefined) {
  27. async = true;
  28. };
  29. var a = ajax.create();
  30. a.open(method, url, async);
  31. a.onreadystatechange = function() {
  32. // a.readyState:
  33. // 0 - UNSENT
  34. // 1 - OPENED
  35. // 2 - HEADERS_RECEIVED
  36. // 3 - LOADING
  37. // 4 - DONE
  38. callback(method, data, a.readyState, a.status, a.responseText);
  39. };
  40. if(method == 'POST') {
  41. a.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
  42. };
  43. a.send(data);
  44. };
  45. ajax.get = function(url, data, callback, async) {
  46. var query = [];
  47. for(var key in data) {
  48. query.push(encodeURIComponent(key) + '=' + encodeURIComponent(data[key]));
  49. };
  50. ajax.send(url + (query.length ? '?' + query.join('&') : ''), callback, 'GET', null, async);
  51. };
  52. ajax.post = function(url, data, callback, async) {
  53. var query = [];
  54. for (var key in data) {
  55. query.push(encodeURIComponent(key) + '=' + encodeURIComponent(data[key]));
  56. };
  57. ajax.send(url, callback, 'POST', query.join('&'), async);
  58. };