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

come fare cosa simile in javascript, per esempio, ottenere la stringa di query dal matrice, e convertire il serie a query string?Come implementare qualcosa come http_build_query di PHP e il contrario in javascript?

UPDATE

il plugin jQuery non funziona:

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

Produce ?cow=milk mentre io voglio che sia ?cow=milk&first=value

+1

Potrebbe questo aiuto? http://phpjs.org/functions/http_build_query:428 – phsource

+0

No, non posso importare un gigante totalmente nuovo per questa sola funzionalità! – wamp

+0

Quella funzione non ha alcuna dipendenza, quindi puoi semplicemente copiarla e incollarla (seguendo la licenza). –

risposta

-2

provare il jQuery query plugin. È piuttosto intuitivo. È possibile utilizzare accesso get e set per leggere e modificare la stringa di query:

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

È possibile creare un nuovo oggetto query da una stringa esistente:

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

è anche possibile creare un oggetto vuoto:

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

No, non voglio che ottenga la stringa di query da location.href, ma da una specifica variabile javascript. – wamp

+0

È possibile crearlo da una stringa esistente. –

+0

Questo plug-in non funziona. – wamp

24

Se stai usando jQuery, quindi è possibile utilizzare la funzione 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" 

Può serializzare anche alcuni array complessi.

+0

@Shea Se la risposta non risolve il problema, votarlo. –

+0

Hai chiamato 'var array', avrebbe dovuto essere' var obj', –

+0

Ben individuato - ci sono voluti solo 7 anni :) – Les

Problemi correlati