Cercando tra i post inseriti ho trovato questo codice:
Codice PHP:
function RSobj() {
var HTTPobj;
if (window.ActiveXObject) HTTPobj = new ActiveXObject("MSXML2.XMLHTTP");
else HTTPobj = new XMLHttpRequest();
return HTTPobj;
}
function ajaxGETin(urlget, comp, inna) {
var HTTPobj = new RSobj();
HTTPobj.open("GET", urlget, true);
HTTPobj.send(null);
HTTPobj.onreadystatechange = function() {
if (HTTPobj.readyState == 4) {
if (inna == 1) document.getElementById(comp).innerHTML = HTTPobj.responseText;
else if (inna == 2) document.getElementById(comp).innerHTML += HTTPobj.responseText;
if (document.ActiveXObject) HTTPobj.abort();
}
}
}
/*function ajaxPOSTxx(urlpost, comp) {
var HTTPobj = new RSobj();
var postData = "?testo=ciao";
HTTPobj.open("POST", urlpost, true);
HTTPobj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
HTTPobj.setRequestHeader("Content-length", postData.length);
HTTPobj.setRequestHeader("Connection", "close");
HTTPobj.onreadystatechange = function() {
if (HTTPobj.readyState == 4) {
if (HTTPobj.responseText == "OK") alert('ok');
else if (HTTPobj.responseText == "LOGIN") alert('please login');
else alert(HTTPobj.responseText);
//document.getElementById(comp).innerHTML = HTTPobj.responseText;
if (document.ActiveXObject) HTTPobj.abort();
}
}
HTTPobj.send(postData);
}*/
/** Oggetto "Remote Scripting Form"
* crea un form per inviare dati attraverso l'oggeto HTTP
* param id: l'id del form
*/
var RSForm = function (id) {
// Imposta la variabile di classe form come il form passato
this.form = document.getElementById(id);
// Prende method e action del forum
this.method = this.form.method;
this.action = this.form.action;
// Crea una variabile nulla per l'oggetto HTTP
this.HTTPobj = null;
// Crea un metodo nullo per il cambiamento di stato dell'oggetto HTTP
this.onreadystatechange = function() { }
}
/** Metodo send dell'oggetto RSForm
* Deve essere attivato all'onSubmit del form, e si occupa di inviare i dati
*/
RSForm.prototype.send = function() {
// Riferisce la variabile form alla variabile di classe form
var form = this.form;
// Crea l'oggetto HTTP
this.HTTPobj = RSobj();
var HTTPobj = this.HTTPobj;
// Associa il metodo onreadystatechange della classe a quello dell'oggetto HTTP
HTTPobj.onreadystatechange = this.onreadystatechange;
// Crea una variabile vuota con i dati da passare
var data = "";
// Per ogni elemento del form
for (var i=0; i < form.elements.length; i++) {
// Se il tipo è diverso da submit
if (form.elements[i].type != "submit") {
// Se non è il primo valore aggiunge la & per concatenare i valori
if (i != 0) { data += "&"; }
// Aggiugne ai dati "nome=valore" del campo
data += form.elements[i].name +"="+ form.elements[i].value;
}
}
// Invia i dati alla pagina tramite il metodo specificato nel form
HTTPobj.open(this.method, this.action, true);
HTTPobj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
HTTPobj.setRequestHeader('Content-length', data.length);
HTTPobj.setRequestHeader('Connection', 'close');
HTTPobj.send(data);
}
Nel sito dove è stato utilizzato viene richiamato al select di una combo, proprio come serve a me, ed io l'ho integrato nella mia pagina in questo modo:
<select onchange="ajaxGETin('cerca.php?id_stato='+this.opt ions[this.selectedIndex].value, 'componenteajax', 1)" name="">
<option></option>
<option value="1">primo</option>
<option value="2">secondo</option>
<option value="3">terzo</option>
</select>
Nell'esempio viene creata la combo dal nulla al posto di questo:
<div id="componenteajax">
seleziona uno stato!</div>
Il mio problema è che io la combo già ce l'ho, la devo solo ricaricare al select della prima combo, però mettendo dentro il div la suddetta combo mi ricarica tutto il sito dentro la pagina!
Dove sbaglio!?!?