Как написать эту строку запроса лучше? - PullRequest
0 голосов
/ 23 ноября 2011

Я вижу строку нашей кодовой базы в JavaScript для построения строки запроса:

    var queryParameters = "imagePath=" + encodeURIComponent(_image.source) + "&saveMode=" + saveMode + "&pageFolderId=" + pageFolderId + "&id=" + pageId + "&parent=" + parent;
    queryParameters += "&quality=" + sQuality.value + "&commands=" + commandQueue.Serialize();

Есть ли лучший способ написать это?

Ответы [ 4 ]

4 голосов
/ 23 ноября 2011

Если вы используете jQuery, вы можете просто использовать объект, представляющий параметры строки запроса:

var queryParameters = jQuery.param({
    imagePath: _image.source,
    saveMode: saveMode,
    pageFolderId: pageId,
    // ...
});

jQuery автоматически кодирует значения строки запроса, поэтому вам не нужно вызывать encodeURIComponentна _image.source.Для получения дополнительной информации см .: http://api.jquery.com/jQuery.param/

1 голос
/ 23 ноября 2011

Вы можете использовать разрывы строк:

var queryParameters = "imagePath=" + encodeURIComponent(_image.source) 
    + "&saveMode=" + saveMode 
    + "&pageFolderId=" + pageFolderId 
    + "&id=" + pageId 
    + "&parent=" + parent
    + "&quality=" + sQuality.value 
    + "&commands=" + commandQueue.Serialize();
0 голосов
/ 23 ноября 2011

Как насчет:

function qSerialize(obj){
  var q = [];
  for (var l in obj) {
   if (obj.hasOwnProperty(l)){
     q.push(l+'='+obj[l]);
   }
  }
  return q.join('&');
}

var qParamStr = qSerialize( 
 {
  imagePath: encodeURIComponent(_image.source),
  saveMode: saveMode,
  pageFolderId: pageFolderId,
  id: pageId,
  parent: parent,
  quality: sQuality.value,
  commands: commandQueue.Serialize()
 }
);
0 голосов
/ 23 ноября 2011

Вы можете поместить все данные в массив и затем выполнить соединение. Обычно объединение массива происходит быстрее, чем конкатенация, но если вы не строите эту строку несколько раз, это не должно иметь значения.

var arr = [];
arr[1] = "item1";
arr[2] = "item2";
arr[3] = "item3";
var result = arr.join('');

Запись этого слова улучшает читаемость и отладку. Вы можете очень просто прокомментировать один параметр.

...