2013-08-08 2 views
1

я в настоящее время имею ассоциативный массив urlvalue со следующими значениями:Jquery - Создание URL из ассоциативного массива

{"folder":"subscriber", "file":"setstatus", "alert":"yes", "id":"12"} 

Я хотел бы, чтобы превратить этот массив в URL, так что я могу отправить переменные другая страница. Как это можно сделать с помощью JQuery, так что они выглядят следующим образом:

?folder=subscriber&file=setstatus&alert=yes&id=12 

Благодаря

+1

Это выглядит как домашнее задание , [Что вы пробовали?] (Http://mattgemmell.com/2008/12/08/what-have-you-tried/) – freakish

ответ

8

Вам нужно jQuery.param():

var params = {"folder":"subscriber", "file":"setstatus", "alert":"yes", "id":"12"}; 
var str = jQuery.param(params); 
3

Используйте

$ .param (VALUE)

funciton.

Пример:

var obj = {"folder":"subscriber", "file":"setstatus", "alert":"yes", "id":"12"}, 
    toParam= $.param(obj); 

alert(toParam); 

выход:

папка = абонент & файл = setstatus & предупреждение = да & ID = 12

Fillder: http://jsfiddle.net/BGjWT/

1

Вы можете использовать метод map, чтобы превратить каждую пару ключ-значение в строку, а затем объединить массив строк в одну строку. Используйте функцию encodeURICompontent правильно закодировать ключи и значения:

var urlvalue = {"folder":"subscriber", "file":"setstatus", "alert":"yes", "id":"12"}; 

var param = '?' + $.map(urlvalue, function(v, k) { 
    return encodeURIComponent(k) + '=' + encodeURIComponent(v); 
}).join('&'); 

alert(param); 

Демо: http://jsfiddle.net/Guffa/sCn5U/

0

Попробуйте это:

var test = {"folder":"subscriber", "file":"setstatus", "alert":"yes", "id":"12"}; 
var queryString = "?folder=" + test.folder + "&file=" + test.file + "&alert=" + test.alert + "&id=" + test.id + ""; 
alert(queryString); 

Fiddle

0

Возможное решение, которое не предполагает JQuery вообще (я предполагаю, что люди после решения JQuery из-тега):

var combine = function(params) { 
    var lst = []; 
    for (var key in params) { 
     if (params.hasOwnProperty(key)) { 
      lst.push(encodeURIComponent(key)+"="+encodeURIComponent(params[key])); 
     } 
    } 
    return "?"+lst.join("&"); 
} 
Смежные вопросы