2015-09-16 23 views
5

Tôi đang sử dụng jQuery $.param() serialize một đối tượng trong các định dạng sau:

var queryParams = { 
    firstNm: null, 
    lastNm: 'M', 
    id: null, 
    email: null 
} 

Khi tôi sử dụng $.param(queryParams), tôi nhận được như sau:

firstNm = & lastNm = M & id = & email =

Những gì tôi muốn có thay vì chỉ đơn giản là:

lastNm = M
0.123.

Tôi muốn bất kỳ thông số nào có giá trị rỗng hoặc trống để không hiển thị trong đầu ra. Điều này có thể sử dụng jQuery của $.param(), hoặc nó sẽ yêu cầu serialization tùy chỉnh?

EDIT:

này KHÔNG phải là một bản sao của this question. Câu hỏi đó liên quan nhiều hơn đến API của MediaWiki và phải làm với việc không bao gồm = khi tham số rỗng hoặc rỗng và chỉ bao gồm khóa của cặp giá trị khóa. Câu hỏi của tôi là liệu có thể rời khỏi cặp giá trị khóa hoàn toàn khỏi đầu ra nếu giá trị là null hoặc rỗng.

+0

có thể trùng lặp của [tham số URL không có giá trị] (http://stackoverflow.com/questions/11088184/url-parameters-without-values) –

Trả lời

4

Bạn có thể viết chức năng riêng của mình để loại trừ các giá trị null và trống rỗng:

var queryParams = { 
    firstNm: null, 
    lastNm: 'M', 
    id: null, 
    email: null 
} 

function isEmpty(value){ 
    return value == null || value == ""; 
} 

for(key in queryParams) 
    if(isEmpty(queryParams[key])) 
    delete queryParams[key]; 

// queryParams now = { lastNm: "M"} 

và nếu bạn nhận được các giá trị này từ hình thức bạn có thể làm như sau:

$("#form :input[value!='']").serialize() 
+0

Tôi nghĩ đây là giải pháp tốt nhất. Có vẻ như phương thức '$ .param()' sẽ chấp nhận tham số thứ ba, giống như 'includeEmpty'. –

0

Ở đây bạn có thể loại trừ giá trị null, giữ thuộc tính của bạn trong đối tượng của bạn: https://jsfiddle.net/leojavier/bxc57o3v/2/

var queryParams = { 
     firstNm: null, 
     lastNm: 'M', 
     id: null, 
     email: null 
    } 
    var query = {} 
    for(item in queryParams) { 
     if(queryParams[item] != null && queryParams[item].length > 0) { 
      query[item] = queryParams[item] 
      console.log(query) 
      console.log($.param(query)); 
     } 
    } 
+1

Ý tưởng hay, nhưng trong trường hợp của tôi, tốt nhất là xóa thuộc tính, vì tôi ngay lập tức chuyển hướng đến một trang mới bao gồm đối tượng được tuần tự hóa làm tham số trong URL –

Các vấn đề liên quan