簡體   English   中英

如何以更好的方式編寫此查詢字符串?

[英]How to write this query string in better way?

我在JavaScript中看到一行代碼來構造查詢字符串:

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

有沒有更好的方法來寫這個?

如果使用的是jQuery,則可以僅使用一個代表查詢字符串選項的對象:

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

jQuery將自動對查詢字符串值進行編碼,因此您無需在_image.source上調用encodeURIComponent 參見以獲取更多信息: http : //api.jquery.com/jQuery.param/

您可以使用換行符:

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

您可以將所有數據放入數組中,然后執行聯接。 通常,數組的連接要快於連接,但是如果您不多次構建此字符串,則不會有什么不同。

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

這樣寫可以提高可讀性和調試能力。 您可以非常簡單地注釋一個參數。

怎么樣:

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()
 }
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM