Change the encoding of parameters, as discussed in #491. The reason this
is important is that the WMS spec specifies that you should seperate layer names with a ",", and we were encoding that, so compliant WMSes would attempt to find a single layer with ","s in the name, instead of grabbing multiple layers. The new way to specify multiple layers is to set: layers: ['global_modis','landsat'] or the like. Includes tests, signoff from SDE. git-svn-id: http://svn.openlayers.org/trunk/openlayers@2232 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
@@ -394,17 +394,32 @@ OpenLayers.Util.applyDefaults = function (to, from) {
|
||||
* @returns a concatenation of the properties of an object in
|
||||
* http parameter notation.
|
||||
* (ex. <i>"key1=value1&key2=value2&key3=value3"</i>)
|
||||
* If a parameter is actually a list, that parameter will then
|
||||
* be set to a comma-seperated list of values (foo,bar) instead
|
||||
* of being URL escaped (foo%3Abar).
|
||||
* @type String
|
||||
*/
|
||||
OpenLayers.Util.getParameterString = function(params) {
|
||||
paramsArray = new Array();
|
||||
|
||||
for (var key in params) {
|
||||
var value = params[key];
|
||||
if ((value != null) && (typeof value != 'function')) {
|
||||
paramsArray.push(encodeURIComponent(key) + "=" +
|
||||
encodeURIComponent(value));
|
||||
var value = params[key];
|
||||
if ((value != null) && (typeof value != 'function')) {
|
||||
var encodedValue;
|
||||
if (typeof value == 'object' && value.constructor == Array) {
|
||||
/* value is an array; encode items and separate with "," */
|
||||
var encodedItemArray = new Array();
|
||||
for (var itemIndex=0; itemIndex<value.length; itemIndex++) {
|
||||
encodedItemArray.push(encodeURIComponent(value[itemIndex]));
|
||||
}
|
||||
encodedValue = encodedItemArray.join(",");
|
||||
}
|
||||
else {
|
||||
/* value is a string; simply encode */
|
||||
encodedValue = encodeURIComponent(value);
|
||||
}
|
||||
paramsArray.push(encodeURIComponent(key) + "=" + encodedValue);
|
||||
}
|
||||
}
|
||||
|
||||
return paramsArray.join("&");
|
||||
|
||||
@@ -177,7 +177,7 @@
|
||||
}
|
||||
|
||||
function test_07_Util_getParameterString(t) {
|
||||
t.plan( 2 );
|
||||
t.plan( 4 );
|
||||
|
||||
var params = { foo: "bar",
|
||||
chicken: 1.5
|
||||
@@ -185,6 +185,15 @@
|
||||
|
||||
t.eq( OpenLayers.Util.getParameterString(params), "foo=bar&chicken=1.5", "getParameterString returns correctly");
|
||||
t.eq( OpenLayers.Util.getParameterString({'a:':'b='}), "a%3A=b%3D", "getParameterString returns correctly with non-ascii keys/values");
|
||||
|
||||
|
||||
// Parameters which are a list should end up being a comma-seperated
|
||||
// list of the URL encoded strings
|
||||
var params = { foo: ["bar,baz"] };
|
||||
t.eq( OpenLayers.Util.getParameterString(params), "foo=bar%2Cbaz", "getParameterString encodes , correctly in arrays");
|
||||
|
||||
var params = { foo: ["bar","baz,"] };
|
||||
t.eq( OpenLayers.Util.getParameterString(params), "foo=bar,baz%2C", "getParameterString returns with list of CSVs when given a list. ");
|
||||
}
|
||||
|
||||
function test_08_Util_createAlphaImageDiv(t) {
|
||||
|
||||
Reference in New Issue
Block a user