Can I do this: mysite.com?&var1=value1&var2=value2

Basically, I wrote this code:

var paramStr = '';
for (var n in params) {
    paramStr += '&' + n + '=' + params[n];
}
xhr.open(method, url + '?' + paramStr);

Do I need to remove the first ampersand or leave it as is without side effects?

+3
source share
6 answers

You can leave it as it is.

www.something.com?&something=something_else - valid url

But I would make it look right: add a dummy parameter:

var paramStr = '?dummy'; //or any other value
for (var n in params) {
    paramStr += '&' + n + '=' + params[n];
}
xhr.open(method, url + paramStr);

or @slobodan :

var paramStr = '?'; 
for (var n in params) {
    paramStr += n + '=' + params[n] + '&'; 
    // because you can have a `&` at the end
}
xhr.open(method, url + paramStr);
+4
source

There should be no problems with the previous ampersand. However, in this situation, I like to push the values ​​to the array and join them later, then you have nothing to worry about:

var paramArr = [];
for (var n in params) {
    paramArr.push(n + '=' + params[n]);
}
xhr.open(method, url + '?' + paramArr.join("&"));

Working demo: http://jsfiddle.net/rq7bA/

+3
source

. : paramStr.substr(1)

, / .com. , ...


"" URL- /, ( XHR) .

+2

, , , URI:

var paramList = [];
for (var n in params) {
    paramList.push(encodeURIComponent(n) + '=' + encodeURIComponent(params[n]));
}
var paramStr = paramList.join('&');
xhr.open(method, url + '?' + paramStr);

[ , jQuery, -].

+1

, ...

var paramStr = '';
for (var n in params) {
  var param = n + '=' + params[n];
  paramStr += paramStr == '' ? param : '&' + param
}
xhr.open(method, url + '?' + paramStr);

?

params.join('&')

? , ?

0

, , .

var paramStr = '';
var count=0;
for (var n in params) {
    paramStr += (count>0?'&':'') + n + '=' + params[n];
    count++;
}
xhr.open(method, url + '?' + paramStr);
0

All Articles