From 80a9d22ef330075760237f42a383af7b904e30c2 Mon Sep 17 00:00:00 2001 From: Michael White Date: Mon, 11 Jan 2016 12:58:57 -0500 Subject: [PATCH 1/6] upgrade karma --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 711d42b..81bd82d 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "devDependencies": { "backbone": "1.2.1", "chai": "^3.0.0", - "karma": "^0.12.36", + "karma": "^0.13.9", "karma-chrome-launcher": "^0.1.12", "karma-cli": "0.0.4", "karma-firefox-launcher": "^0.1.6", From abe949dba7625d51e646e9ed0ca854a2d2940354 Mon Sep 17 00:00:00 2001 From: Michael White Date: Mon, 11 Jan 2016 13:06:32 -0500 Subject: [PATCH 2/6] handle multiple values for GET parameters --- backbone.nativeajax.js | 6 +++++- test/ajax.js | 6 ++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/backbone.nativeajax.js b/backbone.nativeajax.js index 3f033b7..d3139b4 100644 --- a/backbone.nativeajax.js +++ b/backbone.nativeajax.js @@ -98,7 +98,11 @@ '=' + encodeURIComponent(value); }; for (var key in options.data) { - query += stringifyKeyValuePair(key, options.data[key]); + var value = options.data[key]; + var values = Array.isArray(value) ? value : [value]; + for (var i=0; i < values.length; i++) { + query += stringifyKeyValuePair(key, values[i]); + } } if (query) { diff --git a/test/ajax.js b/test/ajax.js index 8260f34..b9cb63f 100644 --- a/test/ajax.js +++ b/test/ajax.js @@ -41,6 +41,12 @@ describe('Backbone.NativeAjax', function() { expect(open).to.have.been.calledOnce; expect(open).to.have.been.calledWithExactly('GET', 'test?a=1&b=2', true); }); + it('should handle multiple values for a GET parameter', function() { + ajax({url: 'test', dataType: 'json', data: {a: [1, 2]}}); + + expect(open).to.have.been.calledOnce; + expect(open).to.have.been.calledWithExactly('GET', 'test?a=1&a=2', true); + }) }); describe('headers', function() { From 52ee68d61cd793cf531d0c100370452a2ad42dbc Mon Sep 17 00:00:00 2001 From: Michael White Date: Thu, 28 Jan 2016 17:35:53 -0500 Subject: [PATCH 3/6] modify to work on node If CommonJS environment detected, assume a module 'xmlhttprequest' is defined that exports an object satisfying the XMLHttpRequest interface. --- backbone.nativeajax.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/backbone.nativeajax.js b/backbone.nativeajax.js index d3139b4..ceb5ae8 100644 --- a/backbone.nativeajax.js +++ b/backbone.nativeajax.js @@ -7,10 +7,14 @@ // https://github.com/akre54/Backbone.NativeAjax (function (factory) { - if (typeof define === 'function' && define.amd) { define(factory); - } else if (typeof exports === 'object') { module.exports = factory(); - } else { Backbone.ajax = factory(); } -}(function() { + if (typeof define === 'function' && define.amd) { + define(factory.bind(this, this.XMLHttpRequest)); + } else if (typeof exports === 'object') { + module.exports = factory(require('xmlhttprequest').XMLHttpRequest); + } else { + Backbone.ajax = factory(XMLHttpRequest); + } +}(function(XMLHttpRequest) { // Make an AJAX request to the server. // Usage: // var req = Backbone.ajax({url: 'url', type: 'PATCH', data: 'data'}); From 26762b06b1f61e919975949f0a87be126e1955f9 Mon Sep 17 00:00:00 2001 From: Michael White Date: Thu, 4 Feb 2016 16:07:06 -0500 Subject: [PATCH 4/6] temporarily add explicit xmlhttprequest dependency --- package.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/package.json b/package.json index 81bd82d..8396611 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,10 @@ "release-minor": "git checkout master && npm version minor -m 'Backbone.NativeAjax %s' && git push origin master --tags && npm publish", "release-major": "git checkout master && npm version major -m 'Backbone.NativeAjax %s' && git push origin master --tags && npm publish" }, + "registry": "npm", + "dependencies": { + "xmlhttprequest": "*" + }, "devDependencies": { "backbone": "1.2.1", "chai": "^3.0.0", From 4c9c5c15a3035bdb0100f3f8ed0c9d71b59775b2 Mon Sep 17 00:00:00 2001 From: Michael White Date: Thu, 4 Feb 2016 16:29:44 -0500 Subject: [PATCH 5/6] remove xmlhttprequest dependency --- package.json | 4 ---- 1 file changed, 4 deletions(-) diff --git a/package.json b/package.json index 8396611..81bd82d 100644 --- a/package.json +++ b/package.json @@ -20,10 +20,6 @@ "release-minor": "git checkout master && npm version minor -m 'Backbone.NativeAjax %s' && git push origin master --tags && npm publish", "release-major": "git checkout master && npm version major -m 'Backbone.NativeAjax %s' && git push origin master --tags && npm publish" }, - "registry": "npm", - "dependencies": { - "xmlhttprequest": "*" - }, "devDependencies": { "backbone": "1.2.1", "chai": "^3.0.0", From 8de897e43a6349c16694b1c64aab21a7caecbd5f Mon Sep 17 00:00:00 2001 From: Michael White Date: Fri, 5 Feb 2016 10:26:33 -0500 Subject: [PATCH 6/6] don't assume browser environment --- backbone.nativeajax.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backbone.nativeajax.js b/backbone.nativeajax.js index ceb5ae8..9a724c8 100644 --- a/backbone.nativeajax.js +++ b/backbone.nativeajax.js @@ -37,7 +37,7 @@ var isValid = function(xhr) { return (xhr.status >= 200 && xhr.status < 300) || (xhr.status === 304) || - (xhr.status === 0 && window.location.protocol === 'file:') + (xhr.status === 0 && typeof window !== "undefined" && window.location.protocol === 'file:') }; var end = function(xhr, options, promise, resolve, reject) {