Namun saran lain.
Sudah ada beberapa jawaban bagus, tetapi saya mendapati mereka tidak perlu rumit dan sulit untuk dipahami. Ini pendek, sederhana, dan mengembalikan array asosiatif sederhana dengan nama kunci yang sesuai dengan nama token di URL.
Saya menambahkan versi dengan komentar di bawah ini untuk mereka yang ingin belajar.
Perhatikan ini bergantung pada jQuery ($ .each) untuk loop-nya, yang saya sarankan daripada forEach. Saya merasa lebih mudah untuk memastikan kompatibilitas lintas-browser menggunakan jQuery di seluruh papan daripada menghubungkan dalam perbaikan individu untuk mendukung mana saja fungsi baru yang tidak didukung di browser yang lebih lama.
Sunting: Setelah saya menulis ini, saya perhatikan jawaban Eric Elliott, yang hampir sama, meskipun menggunakan forEach, sementara saya umumnya menentang (untuk alasan yang disebutkan di atas).
function getTokens(){
var tokens = [];
var query = location.search;
query = query.slice(1);
query = query.split('&');
$.each(query, function(i,value){
var token = value.split('=');
var key = decodeURIComponent(token[0]);
var data = decodeURIComponent(token[1]);
tokens[key] = data;
});
return tokens;
}
Versi yang dikomentari:
function getTokens(){
var tokens = []; // new array to hold result
var query = location.search; // everything from the '?' onward
query = query.slice(1); // remove the first character, which will be the '?'
query = query.split('&'); // split via each '&', leaving us an array of something=something strings
// iterate through each something=something string
$.each(query, function(i,value){
// split the something=something string via '=', creating an array containing the token name and data
var token = value.split('=');
// assign the first array element (the token name) to the 'key' variable
var key = decodeURIComponent(token[0]);
// assign the second array element (the token data) to the 'data' variable
var data = decodeURIComponent(token[1]);
tokens[key] = data; // add an associative key/data pair to our result array, with key names being the URI token names
});
return tokens; // return the array
}
Untuk contoh di bawah ini kami akan menganggap alamat ini:
http://www.example.com/page.htm?id=4&name=murray
Anda dapat menetapkan token URL ke variabel Anda sendiri:
var tokens = getTokens();
Kemudian lihat setiap token URL dengan nama seperti ini:
document.write( tokens['id'] );
Ini akan mencetak "4".
Anda juga bisa langsung merujuk ke nama token dari fungsi secara langsung:
document.write( getTokens()['name'] );
... yang akan mencetak "more".