2011-02-10 2 views
7

Tôi đã có một loạt thông số được chuyển đến một trang theo biến URL. URL trông loại như:Nhận các biến mảng URL trong javascript/jquery

file.aspx loại [] = 1 & loại [] = 7 & loại [] = 3 & id = 8az

Sử dụng phần mở rộng jQuery getUrlParam tôi có thể nhận được các biến url rất dễ dàng, nhưng thay vì trả về loại như một mảng (đó là những gì tôi muốn) nó được trả về là null.

Có cách nào để tôi đọc chúng vào một mảng javascript không?

Trả lời

1

nên không nó là: file.aspx?category=1&category=7&category=3

+0

Đúng là có, với getUrlParam trả về một mảng khi tôi cần. – Hibiscus

+0

hmm.,. tại sao bạn lại chọn nó làm câu trả lời đúng? – arnorhs

+0

Bởi vì, như ông vừa nói ... "thực sự có, [đề nghị của tôi] làm" làm những gì ông cần. –

3

trước đây tôi chỉ cho câu hỏi này: Get QueryString values with jQuery - nhưng như @Crescent tươi chỉ ra, những ví dụ không đối phó với mảng trong chuỗi truy vấn (và bên cạnh đó, họ là một chút chậm Tôi nghĩ

. Vì vậy, tôi nấu chín lên phiên bản của tôi về chức năng này:

function getQueryString() { 
    var ret = {}; 
    var parts = (document.location.toString().split('?')[1]).split('&'); 
    for (var i = 0; i < parts.length; i++) { 

     var p = parts[i].split('='); 
     // so strings will be correctly parsed: 
     p[1] = decodeURIComponent(p[1].replace(/\+/g, " ")); 

     if (p[0].search(/\[\]/) >= 0) { // then it's an array 
      p[0] = p[0].replace('[]',''); 

      if (typeof ret[p[0]] != 'object') ret[p[0]] = []; 
      ret[p[0]].push(p[1]); 
     } else { 
      ret[p[0]] = p[1]; 
     } 
    } 
    return ret; 
} 

Nhưng có nhiều tiền đề nó sẽ chỉ làm việc trên một chuỗi truy vấn thành lập một cách chính xác - không có phát hiện lỗi Ngoài ra, nó không hoạt động trên số/mảng lập chỉ mục... đó là khi mảng của bạn được xác định trong chuỗi truy vấn là:

?category[3]=1&category[4]=7&category[20]=3&id=8az 

Nó sẽ là tầm thường để thêm vào truy vấn .search() một regex cho việc tìm kiếm đó là tốt, nhưng tôi không phải là chuyên gia regex tốt nhất ... ai có ý tưởng?

+1

Không phải là một câu trả lời duy nhất có sẽ làm những gì OP là yêu cầu đối với (ví dụ, phát hiện mảng trong chuỗi truy vấn). –

+0

Bạn nói đúng. Tôi đã không nhận ra - tôi chỉ nhìn thấy một chức năng phức tạp và tôi nghĩ rằng một cái gì đó phức tạp phải làm điều đó đúng .. nhưng nó đã không. Tôi đã thêm phiên bản của mình. – arnorhs

+0

tại sao không chỉ đăng nó thay vì nhận được? – kjy112