2010-06-03 7 views
7
<?php 
$data = array('foo'=>'bar', 
       'baz'=>'boom', 
       'cow'=>'milk', 
       'php'=>'hypertext processor'); 

echo http_build_query($data); 
/* Output: 
     foo=bar&baz=boom&cow=milk&php=hypertext+processor 
*/ 

Jak zrobić coś podobnego w javascript, powiedzmy, uzyskać ciąg zapytania z tablicyi przekształcić tablicy do ciąg kwerendy?Jak zaimplementować coś takiego jak http_build_query PHP i odwrotnie w javascript?

UPDATE

jQuery plugin nie działa:

var fromVar = $.query.load('?cow=milk') 
fromVar.set('first', 'value'); 
fromVar.toString() 

wyprowadza ona ?cow=milk gdy chcę go mieć ?cow=milk&first=value

+1

Czy to może pomóc? http://phpjs.org/functions/http_build_query:428 – phsource

+0

Nie, nie mogę zaimportować zupełnie nowego giganta dla tej jedynej funkcjonalności! – wamp

+0

Ta funkcja nie ma żadnych zależności, więc możesz ją po prostu skopiować i wkleić (zgodnie z licencją). –

Odpowiedz

-2

Spróbuj jQuery query plugin. To dość intuicyjne. Można używać get i set akcesorów czytać i modyfikować ciąg kwerendy:

var cow = $.query.get('cow'); 
$.query.set('cow', 'goat'); 

można utworzyć nowy obiekt kwerendy z istniejącego wyrażenie:

var fromVar = $.query.load('?cow=milk') 
var cow = fromVar.get('cow'); // milk 

Można również utworzyć pusty obiekt:

var newQ = $.query.empty(); 
newQ = newQ.set('first', 'value'); // "?first=value" 
+0

Nie, nie chcę, aby uzyskać ciąg kwerendy z location.href, ale z określonej zmiennej javascript. – wamp

+0

Możesz go utworzyć z istniejącego ciągu. –

+0

Ta wtyczka nie działa. – wamp

24

Jeśli używasz jQuery, a następnie można użyć jQuery.param() funkcję:

var obj = { "foo":"bar", "baz":"boom", "php":"hypertext processor" }; 
var str = jQuery.param(obj); 
alert(str); // should be "foo=bar&baz=boom&php=hypertext+processor" 

Może również serializować niektóre złożone tablice.

+0

@Shea Jeśli odpowiedź nie rozwiązuje problemu, zagłosuj. –

+0

Nazwałeś to "tablicą var", powinno być 'var obj', –

+0

Dobrze zauważył - zabrał tylko ktoś 7 lat :) – Les

Powiązane problemy