2010-06-03 14 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 
*/ 

cómo hacer algo similar en javascript, por ejemplo, obtener la cadena de consulta de la gama , y convertir el gama a cadena de consulta?¿Cómo implementar algo como http_build_query de PHP y viceversa en javascript?

ACTUALIZACIÓN

el jQuery plugin no está funcionando:

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

Genera ?cow=milk mientras que yo quiero que sea ?cow=milk&first=value

+1

¿Le sirve esta ayuda? http://phpjs.org/functions/http_build_query:428 – phsource

+0

No, no puedo importar un gigante totalmente nuevo para esta única funcionalidad. – wamp

+0

Esa función no tiene ninguna dependencia, por lo que puede copiarla y pegarla (siguiendo la licencia). –

Respuesta

-2

Prueba el jQuery query plugin. Es bastante intuitivo. Se puede utilizar acceso get y set para leer y modificar la cadena de consulta:

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

se puede crear un nuevo objeto de consulta a partir de una cadena existente:

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

También puede crear un objeto vacío:

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

No, no quiero que obtenga una cadena de consulta de location.href, sino de una variable javascript específica. – wamp

+0

Puede crearlo a partir de una cadena existente. –

+0

Este complemento no funciona. – wamp

24

Si estás usando jQuery, entonces usted puede utilizar la función jQuery.param():

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" 

También puede serializar algunas matrices complejas.

+0

@Shea Si la respuesta no resuelve su problema, vótelo. –

+0

Lo has llamado 'var array', debería haber sido' var obj', –

+0

Bien visto: solo le tomó a alguien 7 años :) – Les

Cuestiones relacionadas