Come ripetere uno split sullo stesso url?

  • Creatore Discussione Creatore Discussione PHP
  • Data di inizio Data di inizio

PHP

Utente Attivo
9 Mag 2013
105
0
16
Ho un link e ho la necessità di fare uno split:
Codice:
<script>
    $(function(){
        var href = "#myhashtag=1&prova=2"; // example url
        var split = href.split("#");
	var splitt = split.split("&");
	var split3 = split2.split("=");
        var afterSplit = "Error parsing url";
        if(split[1] != null){
            aftersplit = split3[1];
        }
        // If everything went well shows split[1], if not then de default error message is shown
        alert(aftersplit);
    });
</script>
Ho provato così, ma questo codice non funziona e io non sono molto bravo con javascript. Il link si presenta così:
HTML:
www.miosito.it/pagina.php#myhashtag=1&prova=2
Come avrete capito mi interesserebbe tirare fuori il valore numerico di myhashtag e prova, e ho provato a farlo splittando sempre più, fino a raggiungere in teoria due parti il risultato che ovviamente non esce:confused:.
Grazie in anticipo per l'aiuto!
 
Fai cosi
Codice:
var valori = location.hash.substr(1).split('&');
function prendi_valore_hash(key){ 
       for(i in valori) if(valori[i].split('=')[0]==key) return valori[i].split('=')[1];  
       return false; 
}
//da usare ad esempio
alert(prendi_valore_hash('myhashtag'));

Se vuoi sostituisci location.hash con un tuo url statico
 
Grazie per l'aiuto rapidissimo che mi hai dato.
Script funzionante e risposta velocissima. :mavieni:
 
Scusami se ti secco ancora...
sono alle prese con il valore $.ajax.. , precisamente nel campo data:
Codice:
var prov = prendi_valore_hash('prova');....$.ajax({...
...	data: 'prova='+prova,
Cosa sbaglio? Questa è l'ultima domanda poi ho finito la pagina finalmente^^...
 
Scusami se ti secco ancora...
sono alle prese con il valore $.ajax.. , precisamente nel campo data:
Codice:
var prov = prendi_valore_hash('prova');....$.ajax({...
...	data: 'prova='+prova,
Cosa sbaglio? Questa è l'ultima domanda poi ho finito la pagina finalmente^^...
La variabile è prov non prova :mexican:
 
Ho fatto un errore io nel riscrivere (non ho fatto copia e incolla), considera tutto scritto in modo corretto.
Quale può essere il problema?
 
Ho fatto un errore io nel riscrivere (non ho fatto copia e incolla), considera tutto scritto in modo corretto.
Quale può essere il problema?
Posta il codice completo potrebbe dipendere da molte cose se prova ha un valore corretto, inoltre che tipo di errore ti da? E' un errore di sintassi o non invia la richiesta? Oppure non ricevi risposta dalla pagina che chiami?
 
Ricevo un errore dallo scirpt php: in pratica non può fare GET perchè non arriva nulla.
Codice:
var valori = location.hash.substring(1).split('&');
function prendi_valore_hash(key){ 
       for(i in valori) if(valori[i].split('=')[0]==key) return valori[i].split('=')[1];  
       return false; 
}

var pro = prendi_valore_hash('hashstring');
var pr = prendi_valore_hash('prova');

		$.ajax({
			url: "elabora_dati.php",
			type: "GET",
			data: 'hashstring=' + pro + '&prova=' + pr,
			cache: false,
			success: function (html) {
				$('.loading').hide();
				$('#contenuto').html(html);
				$('#contenitore').fadeIn('slow');
			}
		});
	}
	</script>
Ecco qui la parte "incriminata". Vedi cortesemente se trovi l'errore.
 
Ricevo un errore dallo scirpt php: in pratica non può fare GET perchè non arriva nulla.
Codice:
var valori = location.hash.substring(1).split('&');
function prendi_valore_hash(key){ 
       for(i in valori) if(valori[i].split('=')[0]==key) return valori[i].split('=')[1];  
       return false; 
}

var pro = prendi_valore_hash('hashstring');
var pr = prendi_valore_hash('prova');

		$.ajax({
			url: "elabora_dati.php",
			type: "GET",
			data: 'hashstring=' + pro + '&prova=' + pr,
			cache: false,
			success: function (html) {
				$('.loading').hide();
				$('#contenuto').html(html);
				$('#contenitore').fadeIn('slow');
			}
		});
	}
	</script>
Ecco qui la parte "incriminata". Vedi cortesemente se trovi l'errore.
Posta la pagina php, se ricevi una risposta allora non centra il js anche perché mi sembra tutto corretto
(ho provato lo script e i valori vengono inviati via get, vedi eventualmente la console js per conferma)
 
Ho trovato la soluzione, anche se mi sembra strana, quindi la posto.
questo è il valore che avevo prima (non funzionante sul php):
Codice:
var pro = prendi_valore_hash('hashstring');
var pr = prendi_valore_hash('prova');
Questo è il valore modificato e funzionante:
Codice:
var pro = '%23hashstring%3D'+prendi_valore_hash('hashstring');
var pr = '%23prova%3D'+prendi_valore_hash('prova');
Mi sono accorto della differenza lanciando 2 alert, il primo su prendi_valore_hash e il secondo sull'econde della pagina.
Il risultato era diverso, nel primo caso vedevo semplicemente 1, nel secondo %23hashstring%3D1, quindi o pensato di provare ad aggiungere prima quella stringa ed ecco la magia.
Sapete spiegarmi il perchè?
 
Il carattere %23 è # e %3D è = quindi devo dedurre che non ti serviva solo il valore
 
Non lo sapevo....
Comunque non avevo mai avuto bisogno di scriverli, prima scrivendo encode(local..()).. mi veniva passato tutto il valore dell'ancora senza problemi, adesso invece ho bisogno di scriverli per farli leggere(facendo così sono stato obligato a fare uno script per lo split nella pagina php che riceve i dati per separare i caratteri).
Strano comunque.
 

Discussioni simili