ciao a tutti. Finalmente volevo dedicarmi ad ajax ma le mie scarse conoscenze nel mondo del codice mi portano ad avere qualche difficolta'.
Quello che vorrei gestire è l'interazione tra js e php.
In pratica nel mio caso ho una funzione php che crea oggetti php...vedetela come array di array , un esempio potrebbe essere l'oggetto $network= new Network(); ha tanti $connection = new Connection(); , ogni $connection ha tante $session= new Session();
il fatto e' che in base agli attributi di questo oggettone php devo gestire tramite javascript alcune componenti grafiche come input, img ecc ecc....
fin'ora ho gestito il tutto in una maniera orribile...me ne rendo conto, ma purtroppo devo far andare le cose, e da solo ho ottenuto risultati solo in questo modo. Mi piacerebbe discutere approfonditamente di queste cose con i piu esperti di voi(magari anche un po pazienti).
In pratica ho ricreato la stessa gerarchia di classi in javascript, con gli stessi attributi e metodi.
A questo punto per valorizzare con le giuste informazioni l'oggettone javascript chiamavo una funzione php e dentro il codice di questa tramite echo scrivevo codice javscript creando assieme l'oggetto js in questo modo...
Codice PHP:
public function getTrueNetwork($user,$socket){
$net = new Network();
$newMultiSess = new Collection();
$connections = $this->emuConnList($user,$socket);
$totaleSessioni = 0;
echo'<script language = "javascript" type="text/javascript" src="../web/session.js"></script>'.
'<script language="javascript">'.
'if(parent.network){'.
'network = parent.network;'.
'network.clean();'.
'}else{'.
'network=new Network();'.
'}'.
'</script>';
for($i=0;$i<$connections->size();$i++){
$conn = $connections->elementAt($i);
$id_conn = $conn->getId();
$type = $conn->getType();
$name = $conn->getName();
$native = $conn->getNative();
$ip_address=$conn->getIp();
$n_port1 = $conn->getNamePortById(1);
$n_port2 = $conn->getNamePortById(2);
$n_port3 = $conn->getNamePortById(3);
$n_port4 = $conn->getNamePortById(4);
$sessions= $this->emuSessList($id_conn,$user,$socket);
$conn->setSessions($sessions);
$totSession = $conn->countSess();
echo '<script language="javascript">'.
'id_conn="'. $id_conn.'";'.
'type="'. $type.'";'.
'name="'. $name.'";'.
'natives="'. $native.'";'.
'ip_address="'. $ip_address.'";'.
'if(type=="B"){'.
'n1="'. $n_port1.'";'.
'n2="'. $n_port2.'";'.
'n3="'. $n_port3.'";'.
'n4="'. $n_port4.'";'.
'network.setNamePortById(1,n1);'.
'network.setNamePortById(2,n2);'.
'network.setNamePortById(3,n3);'.
'network.setNamePortById(4,n4);'.
'}'.
'network.addConnection(id_conn,type,name,natives,ip_address);'.
'conn = network.getConnById(id_conn);'.
'</script>';
for($j=0;$j<$sessions->size();$j++)
{
$c_sess = $sessions->elementAt($j);
$stat = $c_sess->getStatus();
$currentName= $c_sess->getName();
$id_port = $c_sess->getPort();
$id_sess = $c_sess->getId();
$type = $c_sess->getType();
$ID_IMG_SESS= "ID_".$id_conn."_".$id_port."_".$id_sess;
//if($type!="P"){
echo '<script language="javascript">';
echo 'conn.addSession("'.$id_conn.'","'.$id_sess.'","'.$stat.'","'.$currentName.'","'.$ID_IMG_SESS.'","'.$id_port.'","'.$type.'");';
echo '</script>';
$totaleSessioni++;
//}
$newMultiSess->addElement($c_sess);
}
}
$net->setConnections($connections);
$_SESSION['newMultiSess'] = $newMultiSess;
//echo '<script language="javascript">';
//echo'var t = new Date();';
// echo 'document.write(network.size()+" management- "+t.getMinutes()+"."+t.getSeconds()+"."+t.getMilliseconds()+"
");';
// echo '</script>';
return $net;
}
mi hanno detto che potevo gestire questa cosa con ajax e ci sto provando...ma sono fermo agli inizi.
Io devo valorizzare il mio oggetto network javscript creato a specchio con l'oggetto php.
Quindi....parlando di ajax non capisco se devo per forza fare una richiesta (immagino di si ma non so come) per poi analizzare il response del web server.
Senza usare la mia funzione orribile. Ne ho un'altra solo di php che mi crea l'oggettone php e basta.
in ajax ho fatto
function assegnaXMLHttpRequest() {
// lista delle variabili locali
var
// variabile di ritorno, nulla di default
XHR = null,
// informazioni sul nome del browser
browserUtente = navigator.userAgent.toUpperCase();
// browser standard con supporto nativo
// non importa il tipo di browser
if(typeof(XMLHttpRequest) === "function" || typeof(XMLHttpRequest) === "object")
XHR = new XMLHttpRequest();
// browser Internet Explorer
// è necessario filtrare la versione 4
else if(window.ActiveXObject && browserUtente.indexOf("MSIE 4") < 0)
{
// la versione 6 di IE ha un nome differente
// per il tipo di oggetto ActiveX
if(browserUtente.indexOf("MSIE 5") < 0)
XHR = new ActiveXObject("Msxml2.XMLHTTP");
// le versioni 5 e 5.5 invece sfruttano lo stesso nome
else
XHR = new ActiveXObject("Microsoft.XMLHTTP");
}
return XHR;
}
window.onload = function() {
var ajax = assegnaXMLHttpRequest();
if(ajax) {
// applicativo AJAX
ajax.open("get", "loadTree.php", true);
ajax.send(null);
alert(ajax.status)
alert(ajax.getAllResponseHeaders());
}
ma status e' sempre a 1....perche? e poi se io voglio fare quello citato sopra....cosa devo chiedere con il send?