Merge pull request #5733 from adube/fix-uri-appendparams-exclude-null

Fix #5730 - Ignore null/undef. values in uri.appendParams
This commit is contained in:
Bart van den Eijnden
2016-08-16 14:50:27 +02:00
committed by GitHub
2 changed files with 17 additions and 3 deletions

View File

@@ -10,9 +10,14 @@ goog.provide('ol.uri');
* @return {string} The new URI.
*/
ol.uri.appendParams = function(uri, params) {
var qs = Object.keys(params).map(function(k) {
return k + '=' + encodeURIComponent(params[k]);
}).join('&');
var keyParams = [];
// Skip any null or undefined parameter values
Object.keys(params).forEach(function(k) {
if (params[k] !== null && params[k] !== undefined) {
keyParams.push(k + '=' + encodeURIComponent(params[k]));
}
});
var qs = keyParams.join('&');
// remove any trailing ? or &
uri = uri.replace(/[?&]$/, '');
// append ? or & depending on whether uri has existing parameters

View File

@@ -62,4 +62,13 @@ describe('ol.uri.appendParams()', function() {
expect(url).to.equal('http://example.com/foo?bar=bam&baz=bat&bop=&k=v');
});
it('should not append null or undefined parameters to the url', function() {
var url = ol.uri.appendParams('http://example.com/foo', {
a: '1',
b: null,
c: undefined
});
expect(url).to.equal('http://example.com/foo?a=1');
});
});