Newsgroup: it.comp.lang.javascript
Titolo: Newbie - chiamata a cgi

Vi chiedo cortesemente di darmi una mano.
Non sono un granche' come programmatore javascript, ma mettendo assieme vari 
pezzi sono quasi riuscito ad ottenere quello che mi serve.
Alla pressione di un tasto del joystick viene attivata una funzione 
javascript, all'interno della quale in questo momento apro un alert() per 
verifficare che funzioni, ma in realta' dovrei effettuare la chiamata a 
questa pagina:
http://192.168.1.100/axis-cgi/param.cgi&action=update&GuardTour.G0.Running=no
che serve per bloccare il guard tour di una telecamera IP.
Pero' non si dovrebbe aprire nessuna finestra, in sostanza devo solo fare la 
chiamata allo script cgi che vedete nel link passandogli quei parametri.
Come si puo' fare ?
Ringrazio di cuore per qualsiasi aiuto.
Mik 

 puo' fare ?
a) ti studi xmlhttp (cerca "ajax")
b) richiami il cgi in un frame nascosto

 b) richiami il cgi in un frame nascosto
Grazie del consiglio. In effetti ci avevo un po' smanettato in passato con 
ajax. Ho rispolverato quel poco che avevo fatto e vedo che cosi' funziona"
function createRequestObject() {
 var ro;
 var browser = navigator.appName;
 if(browser == "Microsoft Internet Explorer"){
  ro = new ActiveXObject("Microsoft.XMLHTTP");
 }else{
  ro = new XMLHttpRequest();
 }
 return ro;
}
var http = createRequestObject();
function sndReq() {
 http.open('get', 
'
http://192.168.1.100/axis-cgi/param.cgi&action=update&GuardTour.G0.Running=no'
);
 http.send(null);
}
Poi dall'interno della funzione dove cado quando premo il pulsante del mouse 
chiamo sndReq().
Grazie di nuovo.
Mik 

 ajax. Ho rispolverato quel poco che avevo fatto e vedo che cosi' funziona"
[...]
Visto che sembra che tu non debba gestire la risposta del server 
potresti anche non scomodare XMLHttpRequest e usare un oggetto immagine:
var fakeImg = new Image();
fakeImg.src = tuoURL;
Gestendo gli eventi onload e onerror dell'oggetto puoi anche ottenere 
semplici risposte sě / no dal server.

 semplici risposte sě / no dal server.
Siete gentilissimi e vi ringrazio.
A questo punto, visto che funziona, mi piacerebbe inserire una raffinatezza.
L'applicazione apre 4 finestre, corrispondenti ad altrettante telecamere :
newwindow1=window.open("camera1.html",...);
newwindow2=window.open("camera2.html",...);
newwindow3=window.open("camera3.html",...);
newwindow4=window.open("camera4.html",...);
e poi continua a ciclare su se stessa per controllare se e' stato premuto 
qualche pulsante del joystick.
Ora, quando premo un pulsante del joystick, entro in una funzione e sono in 
grado di intercettare quale pulsante e' stato premuto.
Mi piacerebbe fare apparire una scritta su una delle finestre delle quali ho 
l'handle, ad esempio se premo il pulsante 1 in newwindow1 dovrebbe apparire 
"Controllo telecamera 1" e cosi' via.
Come potrei fare ?
Mik 

 "Controllo telecamera 1" e cosi' via. Come potrei fare ?
Scusa la domanda, ma se per ogni telecamera apri una pagina htm separata, 
perché non lo scrivi dentro ogni pagina?

 perché non lo scrivi dentro ogni pagina?
Perche' il joystick controlla la telecamera della finestra che in quel 
momento e' attiva. Pertanto ho bisogno di una pagina principale che apre le 
altre finestre e in funzione del tasto premuto sul joystick mette a fuoco 
(es. newwindow1.focus();) la finestra della telecamera che si vuole 
controllare in un dato momento.
Quindi ho la pagina main.html che nella fase iniziale apre le altre 4 
finestre:
function init () {
newwindow1=window.open(...);
newwindow2=window.open(...);
newwindow3=window.open(...);
newwindow4=window.open(...);
loop();
 }
Quindi richiama la funzione loop() che continua a ciclare e controlla il 
tasto premuto:
 function loop() {
  var pulsanteA = stick.getA();
  if (pulsanteA) {
 newwindow1.focus();
  }
  var pulsanteB = stick.getB();
  if (pulsanteB) {
 newwindow2.focus();
  }
......
         setTimeout("loop()", INTERVAL);
 }
Magari c'e' un modo piu' intelligente per farlo.
Ogni suggerimento e' assolutamente ben accetto.
Mik 



Può essere, ma purtroppo non ho ben capito ...
se il joystick controlla la window (popup?) che ha il focus, allora nella 
popup puoi fare il focus a quella corretta ... del tipo
 opener.newwindow1.focus(); etc .
Comunque sia, per aiutarti per la tua domanda, io farei:
 a) quando carichi la pagina passi il numero della telecamera, es. 
tuapagina.htm?1 (1=1° telecamera)
 b) nella popup:
    - leggi la querystring (window.location.search.substr(1))
 
https://developer.mozilla.org/En/DOM/Window.location
    - lo scrivi. Se p.e. devi scriverlo dentro un div con id="TelNumber":
      document.getElementById
("TelNumber").innerHTML=window.location.search.substr(1);

 ("TelNumber").innerHTML=window.location.search.substr(1);
Ok, purtroppo pero' non ci ho pensato prima ma dentro alla stessa finestra 
c'e' anche l'immagine della telecamera, pertanto anche se ci scrivo viene 
subito cancellato dal fotogramma successivo. Dovrei trovare il modo di fare 
una sorta di overlay.
Grazie.
Mik 

 il modo di fare una sorta di overlay.
dipende da come è fatta la pagina.
In generale vedi 
http://www.w3.org/TR/CSS2/visuren.html#z-index
oppure sfrutta il title, oppure la statusbar (ma in firefox è 
disabilitata di default se non ricordo male)