mirror of
https://github.com/Hopiu/angular.js.git
synced 2026-03-17 07:40:22 +00:00
Fixed notifyWhenNoOutstandingRequests() when using JSONP
This commit is contained in:
parent
2a9f7b7287
commit
d35c1ac8b0
2 changed files with 11 additions and 7 deletions
|
|
@ -81,6 +81,7 @@ function Browser(window, document, body, XHR, $log) {
|
|||
callback = post;
|
||||
post = _null;
|
||||
}
|
||||
outstandingRequestCount ++;
|
||||
if (lowercase(method) == 'json') {
|
||||
var callbackId = "angular_" + Math.random() + '_' + (idCounter++);
|
||||
callbackId = callbackId.replace(/\d\./, '');
|
||||
|
|
@ -89,7 +90,7 @@ function Browser(window, document, body, XHR, $log) {
|
|||
script.src = url.replace('JSON_CALLBACK', callbackId);
|
||||
window[callbackId] = function(data){
|
||||
window[callbackId] = _undefined;
|
||||
callback(200, data);
|
||||
completeOutstandingRequest(callback, 200, data);
|
||||
};
|
||||
body.append(script);
|
||||
} else {
|
||||
|
|
@ -98,7 +99,6 @@ function Browser(window, document, body, XHR, $log) {
|
|||
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
|
||||
xhr.setRequestHeader("Accept", "application/json, text/plain, */*");
|
||||
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
|
||||
outstandingRequestCount ++;
|
||||
xhr.onreadystatechange = function() {
|
||||
if (xhr.readyState == 4) {
|
||||
completeOutstandingRequest(callback, xhr.status || 200, xhr.responseText);
|
||||
|
|
@ -248,7 +248,7 @@ function Browser(window, document, body, XHR, $log) {
|
|||
});
|
||||
}
|
||||
return listener;
|
||||
}
|
||||
};
|
||||
|
||||
//////////////////////////////////////////////////////////////
|
||||
// Cookies API
|
||||
|
|
|
|||
|
|
@ -20,16 +20,16 @@ describe('browser', function(){
|
|||
fakeWindow = {
|
||||
location: {href:"http://server"},
|
||||
setTimeout: fakeSetTimeout
|
||||
}
|
||||
};
|
||||
|
||||
var fakeBody = {append: function(node){scripts.push(node)}};
|
||||
var fakeBody = {append: function(node){scripts.push(node);}};
|
||||
|
||||
var fakeXhr = function(){
|
||||
xhr = this;
|
||||
this.open = noop;
|
||||
this.setRequestHeader = noop;
|
||||
this.send = noop;
|
||||
}
|
||||
};
|
||||
|
||||
logs = {log:[], warn:[], info:[], error:[]};
|
||||
|
||||
|
|
@ -68,15 +68,19 @@ describe('browser', function(){
|
|||
describe('xhr', function(){
|
||||
describe('JSON', function(){
|
||||
it('should add script tag for request', function() {
|
||||
var callback = jasmine.createSpy('callback');
|
||||
var log = "";
|
||||
browser.xhr('JSON', 'http://example.org/path?cb=JSON_CALLBACK', function(code, data){
|
||||
log += code + ':' + data + ';';
|
||||
});
|
||||
browser.notifyWhenNoOutstandingRequests(callback);
|
||||
expect(callback).not.wasCalled();
|
||||
expect(scripts.length).toEqual(1);
|
||||
var url = scripts[0].src.split('?cb=');
|
||||
expect(url[0]).toEqual('http://example.org/path');
|
||||
expect(typeof fakeWindow[url[1]]).toEqual($function);
|
||||
fakeWindow[url[1]]('data');
|
||||
expect(callback).wasCalled();
|
||||
expect(log).toEqual('200:data;');
|
||||
expect(typeof fakeWindow[url[1]]).toEqual('undefined');
|
||||
});
|
||||
|
|
@ -388,7 +392,7 @@ describe('browser', function(){
|
|||
browser = new Browser(fakeWindow, {}, {});
|
||||
|
||||
var events = [],
|
||||
event = {type: "hashchange"}
|
||||
event = {type: "hashchange"};
|
||||
|
||||
browser.onHashChange(function(e) {
|
||||
events.push(e);
|
||||
|
|
|
|||
Loading…
Reference in a new issue