Newsgroup: it.comp.lang.javascript
Titolo: Problema con... boo (queryString, ovvero location.search)

salve a tutti!!!!!! 8-))
č tantissimo tempo che sono mancato.... cosa č successo di nuovo?
esiste ancora la carne di maiale???....  :-)
passiamo al sodo (e prometto che inizierň a rispondere a tutti...):
ho fatto una funzione JS per leggere i valori di una querystring (i valori
passati da un modulo tramite GET)
che funziona in questo modo:
QRequest("nome_del_campo");
se la uso una volta funziona, ma per usarla piů volte, ad esempio per
leggere piů campi non funziona (false).
perchč?? non riesco a capire dove č il problema.
ecco lo script:
// Legge la QueryString
var temp,temp_arr;
var QueryString = location.search.toString();
QueryString = QueryString.substring(1);
// Riconverte i simboli '+' in spazi
for (var searchPlus = 0; searchPlus <= QueryString.length; searchPlus++) {
 temp = QueryString.substring(searchPlus, (searchPlus+1));
 var precedente = QueryString.substring(0, searchPlus);
 var successivo = QueryString.substring((searchPlus+1));
 if (temp=="+") {
  QueryString = precedente + " " + successivo;
 }
}
// Memorizza le singole coppie nome-valore in un Array
var singQuery = QueryString.split("&")
var howManyQuery = singQuery.length;
function QRequest(campo) {
for (var a=0; a<=(howManyQuery-1); a++) {
 temp_arr = singQuery[a].split("=");
 if (temp_arr[0] == campo) {
  return unescape(temp_arr[1]);
 }
 else {
  return false;
 }
}
}


il problema è nel return false. La funzione QRequest in questo modo
esce sempre dopo aver esaminato il primo campo, senza considerare i
successivi!
la versione corretta dovrebbe essere:
function QRequest(campo) {
	for (var a=0; a<=(howManyQuery-1); a++) {
	temp_arr = singQuery[a].split("=");
		if (temp_arr[0] == campo) {
			return unescape(temp_arr[1]);
		}
	}
	return false;
}
ciao
fa

scusa, ma già avevo risolto (anche dse in modo diverso)
togliendo il return false finale
in questo modo se nella querystring ho ?campo=valore&... mi torna il valore
(con QRequest('campo');), se ho ?campo=&... mi torna niente ("") e se ho
?altrocampo... mi torna undefined
io il return false l'ho messo solo per effettuare un check prima di scrivere
il campo:
if(QRequest('campo')) document.write(Qrequest('campo'));
quindi adesso mi basterà fare:
if(QRequest('campo')==undefined) document.write(QRequest('campo');
il check non l'ho messo perchè la funzione deve avere un largo utilizzo
(sto rifacendo la libreria di funzioni DHTML (layers.js), alla quale
aggiungerò QRequest (querystring.js), LocalInfo che serve per avere
informazioni sul client (plugins, piattaforma, browser, versione,
risoluzione, ecc...) (localinfo.js), e le metterò a disposizione da qualche
parte....
(p.s.: se qualcuno vuole aiutarmi.... :-) si faccia avanti)
ciao
var temp,temp_arr; var QueryString=location.search.toString();
QueryString=QueryString.substring(1);
for (var searchPlus=0; searchPlus<=QueryString.length; searchPlus++)
temp=QueryString.charAt(searchPlus);
var prev=QueryString.substring(0, searchPlus);
var next=QueryString.substring((searchPlus+1));
if (temp=="+")
    QueryString=prev+" "+next;
    }
}
var singQuery=QueryString.split("&");
var howManyQuery=singQuery.length;
function QRequest(campo)
   for (var a=0; a<=(howManyQuery-1); a++) {
      temp_arr=singQuery[a].split("=");
      if (temp_arr[0]==campo)
         return unescape(temp_arr[1]);
      }
   }
}