Ajax.js 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. /*
  2. * DON'T REMOVE THE FOLLOWING LICENSE
  3. * INFORMATION!
  4. * ----------------------------------
  5. * Copyright by
  6. * Global Cube Business Solutions
  7. * Author: Dennis Ritz
  8. * info@global-cube.de
  9. * 2007-2008
  10. * ----------------------------------
  11. */
  12. function Ajax() {
  13. var _method = "POST";
  14. var _requests = new Array();
  15. var _finished = 0;
  16. var _timeout = 30;
  17. //var _url = window.location.protocol+"//"+window.location.host+":"+window.location.port+"/"+window.location.pathname;
  18. var _url = window.location.protocol+"//"+window.location.host+window.location.pathname;
  19. function request(p_class,p_fcnName) {
  20. var args = new Array();
  21. for(var i=0; i<arguments.length;i++) {
  22. args[i] = arguments[i];
  23. }
  24. call.apply(this,args);
  25. }
  26. this.request = request;
  27. function call(p_className,p_fcnName) {
  28. var i;
  29. var x;
  30. var postData;
  31. var args = arguments;
  32. Browser.setDisplay(Browser.getElementById("retrieve"),true);
  33. Browser.setZIndexToMax(Browser.getElementById("retrieve"));
  34. if (typeof(_method) == "undefined" || _method == "")
  35. _method = "GET";
  36. if (_method == "GET") {
  37. if (_url.indexOf("?") == -1) {
  38. _url += "?rc=" + escape(p_className);
  39. } else {
  40. _url += "&rc=" + escape(p_className);
  41. }
  42. _url += "&rm=" + escape(p_fcnName);
  43. _url += "&rd=" + new Date().getTime();
  44. for (i = 2; i < args.length-1; i++)
  45. _url += "&ras[]=" + escape(args[i]);
  46. postData = null;
  47. }
  48. else if (_method == "POST") {
  49. postData = "rc=" + escape(p_className);
  50. postData += "&rm=" + escape(p_fcnName);
  51. postData += "&rd=" + new Date().getTime();
  52. for (i = 2; i < args.length-1; i++)
  53. postData = postData + "&ras[]=" + encodeURIComponent(args[i]);
  54. }
  55. else {
  56. Log.warning('AJAX REQUEST\nIllegal request type: "' + _method + '"');
  57. }
  58. var x = initObject();
  59. if (x == null) {
  60. if (sajax_failure_redirect != "") {
  61. location.href = sajax_failure_redirect;
  62. return false;
  63. } else {
  64. Log.warning('AJAX REQUEST\nCan\'t initialize Ajax object for user agent:"' + navigator.userAgent + '"');
  65. return false;
  66. }
  67. } else {
  68. x.open(_method, _url, true);
  69. _requests[_requests.length] = x;
  70. if (_method == "POST") {
  71. x.setRequestHeader("Method", "POST " + _url + " HTTP/1.1");
  72. x.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
  73. x.setRequestHeader("encoding", "UTF-8");
  74. x.setRequestHeader("send-method", "application/x-www-form-urlencoded; charset=utf-8");
  75. }
  76. x.onreadystatechange = function onreadystatechange() {
  77. if (x.readyState != 4)
  78. return;
  79. var txt = x.responseText.replace(/^\s*|\s*$/g,"");
  80. var status = txt.charAt(0);
  81. if (status != "+") {
  82. Log.warning('AJAX REQUEST RESPONSE<br><font color=#ff0000>Status: FAILURE (unexpected response format)</font><br>Evaluate status: NOT EXECUTED<br>' + txt);
  83. } else {
  84. var data = txt.substring(2);
  85. try {
  86. var callback;
  87. var calldata = false;
  88. if (typeof args[args.length-1] == "object") {
  89. callback = args[args.length-1].callback;
  90. calldata = args[args.length-1].calldata;
  91. } else {
  92. callback = args[args.length-1];
  93. }
  94. callback(eval(data), calldata);
  95. Log.notice('AJAX REQUEST RESPONSE<br>Response status: OK<br>Evaluate status: OK<br>' + txt);
  96. } catch (e) {
  97. Log.error('AJAX REQUEST RESPONSE<br>Response status: OK<br><font color=#ff0000>Evaluate status: FAILURE (' + e + ')</font><br>' + txt);
  98. }
  99. }
  100. var sajax_active = false;
  101. var k = _finished;
  102. for(var i=0; i<_requests.length;i++) {
  103. if(_requests[i].readyState != 4){
  104. sajax_active = true;
  105. }
  106. }
  107. if(!sajax_active){
  108. _requests = new array();
  109. Browser.setDisplay(Browser.getElementById("retrieve"),false);
  110. }
  111. }
  112. }
  113. Log.notice('AJAX REQUEST\nRequest function: ' + p_className + '->' + p_fcnName + '\nRequest type: ' + _method + '\nRequest URL: ' + _url + '\nRequest data: ' + postData + '\n\nWaiting for response...\nPress "OK" to continue.');
  114. x.send(postData);
  115. delete x;
  116. return true;
  117. }
  118. this.call = call;
  119. function initObject() {
  120. var A;
  121. var msxmlhttp = new Array(
  122. 'Msxml2.XMLHTTP.5.0',
  123. 'Msxml2.XMLHTTP.4.0',
  124. 'Msxml2.XMLHTTP.3.0',
  125. 'Msxml2.XMLHTTP',
  126. 'Microsoft.XMLHTTP');
  127. for (var i = 0; i < msxmlhttp.length; i++) {
  128. try {
  129. A = new ActiveXObject(msxmlhttp[i]);
  130. } catch (e) {
  131. A = null;
  132. }
  133. }
  134. if(!A && typeof XMLHttpRequest != "undefined")
  135. A = new XMLHttpRequest();
  136. if (!A)
  137. Log.warning('Ajax:initObject\nCould not create connection object.');
  138. return A;
  139. }
  140. this.initObject = initObject;
  141. this.log = function log(){
  142. }
  143. }
  144. var Ajax = new Ajax();