HighDots Forums  

Chiarimento sullo scope

Javascript (Italian) Il linguaggio JavaScript (it.comp.lang.javascript)


Discuss Chiarimento sullo scope in the Javascript (Italian) forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
Lupino
 
Posts: n/a

Default Chiarimento sullo scope - 10-04-2005 , 12:47 PM






Salve a tutti,
ho un piccolo problema: sembra che la variabile http (globale) non venga
vista all'interno di una funzione che ho impostato come handler.

Ecco l'errore:

Errore: http is not defined
File sorgente: http://localhost/nardin/codici.js
Riga: 35

Ed ecco il codice (la riga incriminata è indicata dal commento):

var http = getHTTPObject();

function imposta_dati_residenza(cod_citta, emit_warning, id_citta, id_prov, id_cap) {
if(cod_citta == "")
return;
http.open("GET", "getCityProv.php?cod_res=" + cod_citta, true);
http.onreadystatechange = function() {
//La seguente è la riga numero 35
if (http.readyState == 4) {
results = http.responseText.split(",");
if(results[0] == "nf") {
if(emit_warning)
window.alert("Il codice comune " + cod_citta + " non è presente nel database.");
}
else {
id_citta.value = results[0];
id_prov.value = results[1];
id_cap.value = results[2];
}
}
}

http.send(null);
}

Grazie in anticipo!

--
[ Andrea Spadaccini - a.k.a. Lupino/Lupin85 - Catania - ICQ#: 91528290 ]
[ GPG ID: 5D41ABF0 - key @ pgp.mit.edu - Slackware 10.1 w/Linux 2.4.22 ]
[ Linux User # 313388 - MAIL: a.spadaccini(at)catania(dot)linux(dot)it ]


Reply With Quote
  #2  
Old   
ZER0
 
Posts: n/a

Default Re: Chiarimento sullo scope - 10-05-2005 , 03:31 AM






On Tue, 04 Oct 2005 16:47:00 GMT, Lupino wrote:

Quote:
Salve a tutti,
ho un piccolo problema: sembra che la variabile http (globale) non venga
vista all'interno di una funzione che ho impostato come handler.
Molto strano. Hai modo di pubblicare tale pagina online, in modo da poter
vedere l'errore a runtime?

Il codice che hai scritto, ad una prima occhiata sembrerebbe a posto.

--
~ "The demo effect, you don't expect"



Reply With Quote
  #3  
Old   
Cristiano Larghi
 
Posts: n/a

Default Re: Chiarimento sullo scope - 10-05-2005 , 03:34 AM



In data Wed, 5 Oct 2005 09:31:00 +0200, ZER0 ha scritto:

Quote:
Molto strano. Hai modo di pubblicare tale pagina online, in modo da poter
vedere l'errore a runtime?
Il codice che hai scritto, ad una prima occhiata sembrerebbe a posto.
Così tanto per io cambierei il nome della var...giusto per un test.

--
"Emancipate yourselves from mental slavery;
None but ourselves can free our minds"
B.M.


Reply With Quote
  #4  
Old   
Nando
 
Posts: n/a

Default Re: Chiarimento sullo scope - 10-05-2005 , 04:51 AM



ZER0 <zer0.shock (AT) libero (DOT) it> ha scritto:

Quote:
Il codice che hai scritto, ad una prima occhiata sembrerebbe a posto.
Premetto (come del resto gia' sapete) che sono un grande ignorante e
neanche so che oggetto restituisca getHTTPObject.
La mia domanda e' questa: in questo frammento di codice

http.onreadystatechange = function() {
//La seguente è la riga numero 35
if (http.readyState == 4) {
results = http.responseText.split(",");

si aggiunge un metodo all'oggetto http (o no?); all'interno del metodo,
quindi, non si dovrebbe usare this in luogo di http?
Se la mia domanda rivela la mia idiozia fatemelo notare con garbo, grazie


--
~Nando~ :-/__.oO
Apostolo della Prova


Reply With Quote
  #5  
Old   
Cristiano Larghi
 
Posts: n/a

Default Re: Chiarimento sullo scope - 10-05-2005 , 04:54 AM



In data Wed, 5 Oct 2005 10:51:38 +0200, Nando ha scritto:

Quote:
La mia domanda e' questa: in questo frammento di codice
http.onreadystatechange = function() {
si aggiunge un metodo all'oggetto http (o no?);
no, si "assegna" una funzione all'oggetto che viene scatenata dall'evento
onreadystatechange.
Hai provato a cambiare il nome dell'oggetto da http a pippo ?

--
"e mai che mi sia venuto in mente
di essere più ubriaco di voi
di essere molto più ubriaco di voi"
F.D.A.


Reply With Quote
  #6  
Old   
Nando
 
Posts: n/a

Default Re: Chiarimento sullo scope - 10-05-2005 , 05:00 AM



Cristiano Larghi <c.larghi_NOSPAM (AT) editaliasrl (DOT) it> ha scritto:

Quote:
In data Wed, 5 Oct 2005 10:51:38 +0200, Nando ha scritto:

La mia domanda e' questa: in questo frammento di codice
http.onreadystatechange = function() {
si aggiunge un metodo all'oggetto http (o no?);
no, si "assegna" una funzione all'oggetto che viene scatenata dall'evento
onreadystatechange.
Ah, gia' #^__^#
E vabbuo'... niente this, quindi?

Quote:
Hai provato a cambiare il nome dell'oggetto da http a pippo ?
Ma chi, io?
E mica sono Lupino!
:-)

--
~Nando~ :-/__.oO
Apostolo della Prova


Reply With Quote
  #7  
Old   
Cristiano Larghi
 
Posts: n/a

Default Re: Chiarimento sullo scope - 10-05-2005 , 05:03 AM



In data Wed, 5 Oct 2005 11:00:56 +0200, Nando ha scritto:

Quote:
Hai provato a cambiare il nome dell'oggetto da http a pippo ?
Ma chi, io?
E mica sono Lupino!
:-)
:-)
era seria la mia proposta. i nomi riservati alle variabili creano sempre
problemi. Probabilmente non è questo il problema (non vedo perché http
debba essere riservato) ma, dato che comunque è un protocollo e quindi il
browser da qualche parte lo interpreta in modo "speciale", io un tentativo
lo farei: dappertutto dove hai nominato l'oggetto http sostituisci con un
altro nome che non sia riservato (pippo vedo che non ti piace, fai allora
uno splendido XmlHttpObject...)

--
"Non sai che ci vuol scienza
ci vuol costanza
ad invecchiare senza maturità"
F.G.


Reply With Quote
  #8  
Old   
ZER0
 
Posts: n/a

Default Re: Chiarimento sullo scope - 10-05-2005 , 05:14 AM



On Wed, 5 Oct 2005 10:51:38 +0200, Nando wrote:

Quote:
Premetto (come del resto gia' sapete) che sono un grande ignorante e
neanche so che oggetto restituisca getHTTPObject.
E' una funzione custom che restituisce un oggetto XMLHttpRequest in base a
come è implementato nel browser, né più né meno.

Quote:
La mia domanda e' questa: in questo frammento di codice

http.onreadystatechange = function() {
//La seguente è la riga numero 35
if (http.readyState == 4) {
results = http.responseText.split(",");

si aggiunge un metodo all'oggetto http (o no?);
No, stiamo definendo un riferimento per l'event-handler onreadystatechange,
che esiste nell'oggetto.

Quote:
all'interno del metodo,
quindi, non si dovrebbe usare this in luogo di http?
No, onreadystatechange è un evento decontestualizzato.
Quindi, in IE "this" è riferito alla window mentre su Gecko "this" è
riferito alla function.

Quote:
Se la mia domanda rivela la mia idiozia fatemelo notare con garbo, grazie

"Garbo" in questo momento è fuori sede, ma c'è "Sandrone" con la sua fidata
mazza chiodata, che verrà volentieri a fartelo capire a domicilio. :P

--
~ Non ci sono certezze, solo ragionevoli probabilità. (W. Howe)



Reply With Quote
  #9  
Old   
ZER0
 
Posts: n/a

Default Re: Chiarimento sullo scope - 10-05-2005 , 05:17 AM



On Wed, 5 Oct 2005 11:00:56 +0200, Nando wrote:

Quote:
La mia domanda e' questa: in questo frammento di codice
http.onreadystatechange = function() {
si aggiunge un metodo all'oggetto http (o no?);

no, si "assegna" una funzione all'oggetto che viene scatenata dall'evento
onreadystatechange.

Ah, gia' #^__^#
"Ah già" cosa.. generalmente parlando, quel che hai detto tu è un discorso
valido.

Quote:
E vabbuo'... niente this, quindi?
In questo specifico caso, no. Negli altri altri casi, generalmente si.

--
~ Always remember you're unique, just like everyone else.



Reply With Quote
  #10  
Old   
ZER0
 
Posts: n/a

Default Re: Chiarimento sullo scope - 10-05-2005 , 05:23 AM



On Wed, 5 Oct 2005 11:03:52 +0200, Cristiano Larghi wrote:

Quote:
Hai provato a cambiare il nome dell'oggetto da http a pippo ?
Ma chi, io?
E mica sono Lupino!
:-)
:-)
era seria la mia proposta.
Credo sia seria anche la sua risposta: Non è l'OP (Lupino)

Quote:
i nomi riservati alle variabili creano sempre
problemi.
http non è un nome riservato. Non è il massimo della vita, magari, ma non è
riservato.

Quote:
io un tentativo lo farei:
*Argh*
Non si opera alla cieca.

Quote:
uno splendido XmlHttpObject...)
Giusto per confondere ulteriormente le acque con XMLHttpRequest, eh?

--
~ La donna è un male, ma un male necessario. (Aulo Gellio)



Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.