diff options
Diffstat (limited to 'src/service/httpBackend.js')
| -rw-r--r-- | src/service/httpBackend.js | 20 | 
1 files changed, 9 insertions, 11 deletions
diff --git a/src/service/httpBackend.js b/src/service/httpBackend.js index 7443347f..6ea7df0f 100644 --- a/src/service/httpBackend.js +++ b/src/service/httpBackend.js @@ -17,31 +17,29 @@ var XHR = window.XMLHttpRequest || function() {   */  function $HttpBackendProvider() {    this.$get = ['$browser', '$window', '$document', function($browser, $window, $document) { -    return createHttpBackend($browser, XHR, $browser.defer, $window, $document[0].body, -        $window.location.href.replace(':', '')); +    return createHttpBackend($browser, XHR, $browser.defer, $window.angular.callbacks, +        $document[0].body, $window.location.href.replace(':', ''));    }];  } -function createHttpBackend($browser, XHR, $browserDefer, $window, body, locationProtocol) { -  var idCounter = 0; - +function createHttpBackend($browser, XHR, $browserDefer, callbacks, body, locationProtocol) {    // TODO(vojta): fix the signature    return function(method, url, post, callback, headers, timeout) {      $browser.$$incOutstandingRequestCount();      if (lowercase(method) == 'jsonp') { -      var callbackId = ('angular_' + Math.random() + '_' + (idCounter++)).replace(/\d\./, ''); -      $window[callbackId] = function(data) { -        $window[callbackId].data = data; +      var callbackId = '_' + (callbacks.counter++).toString(36); +      callbacks[callbackId] = function(data) { +        callbacks[callbackId].data = data;        };        var script = $browser.addJs(url.replace('JSON_CALLBACK', callbackId), null, function() { -        if ($window[callbackId].data) { -          completeRequest(callback, 200, $window[callbackId].data); +        if (callbacks[callbackId].data) { +          completeRequest(callback, 200, callbacks[callbackId].data);          } else {            completeRequest(callback, -2);          } -        delete $window[callbackId]; +        delete callbacks[callbackId];          body.removeChild(script);        });      } else {  | 
