SimXhr.html 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>The source code</title>
  6. <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
  7. <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
  8. <style type="text/css">
  9. .highlight { display: block; background-color: #ddd; }
  10. </style>
  11. <script type="text/javascript">
  12. function highlight() {
  13. document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
  14. }
  15. </script>
  16. </head>
  17. <body onload="prettyPrint(); highlight();">
  18. <pre class="prettyprint lang-js"><span id='Ext-ux-ajax-SimXhr'>/**
  19. </span> * @author Don Griffin
  20. *
  21. * Simulates an XMLHttpRequest object's methods and properties but is backed by a
  22. * {@link Ext.ux.ajax.Simlet} instance that provides the data.
  23. */
  24. Ext.define('Ext.ux.ajax.SimXhr', {
  25. readyState: 0,
  26. mgr: null,
  27. simlet: null,
  28. constructor: function (config) {
  29. var me = this;
  30. Ext.apply(me, config);
  31. me.requestHeaders = {};
  32. },
  33. abort: function () {
  34. var me = this;
  35. if (me.timer) {
  36. clearTimeout(me.timer);
  37. me.timer = null;
  38. }
  39. me.aborted = true;
  40. },
  41. getAllResponseHeaders: function () {
  42. var headers = [];
  43. Ext.Object.each(this.responseHeaders, function (name, value) {
  44. headers.push(name + ': ' + value);
  45. });
  46. return headers.join('\x0d\x0a');
  47. },
  48. getResponseHeader: function (header) {
  49. var headers = this.responseHeaders;
  50. return (headers &amp;&amp; headers[header]) || null;
  51. },
  52. open: function (method, url, async, user, password) {
  53. var me = this;
  54. me.method = method;
  55. me.url = url;
  56. me.async = async !== false;
  57. me.user = user;
  58. me.password = password;
  59. me.setReadyState(1);
  60. },
  61. overrideMimeType: function (mimeType) {
  62. this.mimeType = mimeType;
  63. },
  64. schedule: function () {
  65. var me = this;
  66. me.timer = setTimeout(function () {
  67. me.onTick();
  68. }, me.mgr.delay);
  69. },
  70. send: function (body) {
  71. var me = this;
  72. me.body = body;
  73. if (me.async) {
  74. me.schedule();
  75. } else {
  76. me.onComplete();
  77. }
  78. },
  79. setReadyState: function (state) {
  80. var me = this;
  81. if (me.readyState != state) {
  82. me.readyState = state;
  83. me.onreadystatechange();
  84. }
  85. },
  86. setRequestHeader: function (header, value) {
  87. this.requestHeaders[header] = value;
  88. },
  89. // handlers
  90. onreadystatechange: Ext.emptyFn,
  91. onComplete: function () {
  92. var me = this,
  93. callback;
  94. me.readyState = 4;
  95. Ext.apply(me, me.simlet.exec(me));
  96. callback = me.jsonpCallback;
  97. if (callback) {
  98. var text = callback + '(' + me.responseText + ')';
  99. eval(text);
  100. }
  101. },
  102. onTick: function () {
  103. var me = this;
  104. me.timer = null;
  105. me.onComplete();
  106. me.onreadystatechange();
  107. }
  108. });
  109. </pre>
  110. </body>
  111. </html>