• Home
  • Forum
  • Fare Web
  • Javascript

La pagina perde i riferimenti al javascript

  • Creatore Discussione Creatore Discussione Adriano67
  • Data di inizio Data di inizio 18 Lug 2017
  • Tag Tag
    chiamata javascript chiamata xmlhttp javascript
A

Adriano67

Nuovo Utente
18 Lug 2017
3
0
1
  • 18 Lug 2017
  • #1
Ciao.

Sto programmando una pagina che prevede la creazione di una lista di nomi selezionabili da determinati elenchi che vengono presentati in base alla scelta che si effettua in una combo-box.

Provo a spiegarmi meglio: se nella combo seleziono, per esempio, la voce "Antipasti", attraverso una chiamata javascript mostro, in un DIV accanto alla combo stessa, l'elenco degli antipasti disponibili. Da questo elenco posso scegliere 1 o più voci, quindi clicco su un pulsante ed eseguendo una funzione javascript richiamo una pagina PHP che riceve i dati selezionati ed esegue un INSERT, dopodichè eseguo una query per mostrare l'elenco aggiornato ed indirizzo l'output in uno specifico DIV che si trova al di sotto della combo iniziale.

Ai piedi dell'elenco ci sono alcune text-box grazie alle quali posso indicare il numero di persone che partecipano all'evento ed il costo del pranzo.

Quando aggiorno il numero di persone, attraverso una chiamata javascript lancio una funzione che esegue il calcolo dei costi per fare in modo di avere in tempo reale quello che mi serve.

Ora descrivo il problema: quando carico la pagina per la prima volta, il ricalcolo che viene eseguito al cambiare del numero di partecipanti funziona perfettamente. Quando eseguo un INSERT per aggiungere una qualsiasi nuova portata all'interno del menu, dopo aver mostrato il nuovo piatto, il ricalcolo NON funziona più.

Voglio sottolineare che le text box che mostrano questo ricalcolo sono completamente slegate dalla visualizzazione del menu, che si trova in un DIV specifico, popolato attraverso la chiamata javascript.
La chiamata che eseguo è di tipo XMLHTTP.

Funziona tutto, tranne per il fatto che nella pagina "madre", una volta popolato un DIV specifico per mostrare il risultato dell'INSERT, la chiamata alla funzione di ricalcolo non ne vuole sapere di eseguire quello per cui è stata scritta.

Spero di essere stato abbastanza chiaro.
Grazie in anticipo anche solo per aver letto questo post.
 

f107

Utente Attivo
7 Ago 2012
206
6
18
Roma
  • 19 Lug 2017
  • #2
Ciao,
Scusa ma trovo difficolta a capire il tutto...
Il problema è che non si aggiorna il calcolo al cambio delle condizioni?
Non si può vedere un po' di codice? o una demo online?
La console non ti da nessun errore?
 
A

Adriano67

Nuovo Utente
18 Lug 2017
3
0
1
  • 19 Lug 2017
  • #3
Ciao e grazie dell'interessamento.

Cerco di spiegarmi nel migliore dei modi:
in una pagina PHP, ho inserito un <DIV> all'interno del quale, tramite una funzione javascript, scrivo il codice risultante da una query SQL. Per esempio, come scritto in precedenza, seleziono il nome di un piatto e clicco sul pulsante "INSERISCI". Viene scatenato un evento che richiama una funzione JAVASCRIPT che a sua volta chiama una pagina PHP per poter inserire i valori senza dover così ricaricare tutta la pagina.
All'interno della pagina che inserisce i valori selezionati, eseguo una query SQL per avere il menu aggiornato in tempo reale.
Il risultato di questa query, formattato con HTML, viene inviato al <DIV>.

Un pezzo del javascript che utilizzo è
var strTuttoIlCampo = document.getElementById("nome_prodotto").value;
var intPCS = strTuttoIlCampo.indexOf("§");
var intIdIngrediente = strTuttoIlCampo.substr(0,intPCS);
var idr = document.getElementById("id_ricetta").value;
url = "gs_ricette_dettaglio_popola_campi.php?iding="+intIdIngrediente+"&idr="+idr;
XMLHTTP = RicavaBrowser(CambioStatoRigaRicetta);
XMLHTTP.open("GET", url, true);
XMLHTTP.send(null);

La funzione CambioStatoRigaRicetta è
function CambioStatoRigaRicetta()
{
if (XMLHTTP.readyState == 4)
{
var R = document.getElementById("risultato_ingrediente");
R.innerHTML = XMLHTTP.responseText;
}
}

Nella pagina PHP eseguo delle operazioni e l'INSERT dei dati, quindi una SELECT per avere il risultato aggiornato.
Ti prego di prenderlo per buono perchè FUNZIONA. Il risultato viene visualizzato ed è corretto.

Ora, nel codice HTML che viene posto nel DIV con il comando XMLHTTP.responseText, è presente una textbox type="hidden" alla quale devo fare riferimento per poter calcolare in tempo reale il costo del pranzo: cambio il numero di invitati e sul onBlur scateno una funzione javascript che legge i valori dei campi e mi dice quanto costerà un pranzo. Piuttosto semplice.

Ora, qual è il problema? Il problema sta nel fatto che javascript NON riconosce le textbox type="hidden" scritta con il XMLHTTP.responseText. E' come se non esistesse. Ho messo degli alert per vedere i valori dei campi che mi servono e quando cerco di visualizzare quel valore specifico, il javascript non lo vede. Non lo prende in considerazione. E? come se non esistesse all'interno della pagina. E javascript esce dalla funzione senza eseguire alcun calcolo.

Spero di essermi spiegato meglio.
 

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 19 Lug 2017
  • #4
prima di guardare il codice, potrebbe essere un problema di cache,
se invii la stessa richiesta Ajax il risultato viene preso dalla cache
aggiungi alla richiesta Ajax il "timer" come parametro, in modo da "confonderlo" facendogli capire che è una richiesta differente dalla precedente
se poi ancora non funziona fatti vivo
 

f107

Utente Attivo
7 Ago 2012
206
6
18
Roma
  • 19 Lug 2017
  • #5
Adriano67 ha scritto:
Ora, qual è il problema? Il problema sta nel fatto che javascript NON riconosce le textbox type="hidden" scritta con il XMLHTTP.responseText. E' come se non esistesse. Ho messo degli alert per vedere i valori dei campi che mi servono e quando cerco di visualizzare quel valore specifico, il javascript non lo vede. Non lo prende in considerazione. E? come se non esistesse all'interno della pagina. E javascript esce dalla funzione senza eseguire alcun calcolo.
Clicca per allargare...
Se non ho capito male risultato_ingrediente è l'id dell'input type hidden giusto?
In questo caso io cambierei questo:
Codice:
R.innerHTML = XMLHTTP.responseText;
in
Codice:
R.value = XMLHTTP.responseText;
Gli input usano value perché sono oggetti che possono contenere dei valori diciamo, mentre innerHTML di solito è usato per i div o per generici contenitori che possono contenere HTML.

Ovviamente anche quando richiamerai il valore dovrai usare value e non innerHTML.
Prova e fammi sapere.
Nella speranza di aver capito bene
 
A

Adriano67

Nuovo Utente
18 Lug 2017
3
0
1
  • 20 Lug 2017
  • #6
Ciao e grazie della risposta.

No, "risultato_ingrediente" è l'id del DIV all'interno del quale vado a scrivere il risultato della query che eseguo dopo aver inserito i valori nel DB.

Ho provato a scrivere "R.value = XMLHTTP.responseText;" ma purtroppo non funziona. Il risultato non viene neanche mostrato a video.

La cosa ancora più frustrante è che se il DIV si trova all'interno di un form, nel momento in cui sottometto il form stesso, i valori delle textbox sia hidden che non, vengono presi in considerazione da eventuali calcoli...

Per darvi un'altra idea di quello che succede, se invio nel DIV un pulsante che fa riferimento ad un file CSS, il pulsante non viene "stilizzato". Il codice HTML è come se non esistesse all'interno della pagina, pur essendo visualizzato.

Il testo inviato al DIV è solo visualizzato e basta, non ci si può fare niente di niente a meno che, come detto, non sottometti il form. In questo caso però, non ho nessun form da sottomettere perchè non mi serve.

PER QUANTO RIGUARDA IL TIMER:
ad ogni richiesta di inserimento mi viene proposto il menu aggiornato, per cui non credo sia un problema di cache. I dati vengono inseriti nel DB, viene eseguita una query SQL e quindi il risultato mostrato a video, nel nostro bel DIV.
Vediamo i dati aggiornati e questi dati non sono presi in considerazione dal javascript presente nella pagina...

Sto diventando più matto di quanto non lo sia ogni giorno...

Credo che farò l'inserimento dati e poi eseguirò un bellissimo reload tutta la pagina...
 

f107

Utente Attivo
7 Ago 2012
206
6
18
Roma
  • 20 Lug 2017
  • #7
Adriano67 ha scritto:
No, "risultato_ingrediente" è l'id del DIV all'interno del quale vado a scrivere il risultato della query che eseguo dopo aver inserito i valori nel DB.

Ho provato a scrivere "R.value = XMLHTTP.responseText;" ma purtroppo non funziona. Il risultato non viene neanche mostrato a video.
Clicca per allargare...
Allora ti chiedo scusa ho capito male e quella modifica è inutile...
ma il valore del campo hidden è un campo che hai aggiunto dinamicamente alla pagina? come cerci di prendere quel valore poi in js?

si potrebbe vedere tutto il codice front-end?

Matteo
 
Devi accedere o registrarti per poter rispondere.

Discussioni simili

R
Tema per una pagina specifica di un sito
  • RobertaG
  • 26 Ott 2024
  • WordPress
Risposte
2
Visite
280
WordPress 6 Nov 2024
RobertaG
R
F
FINANZIARIO.IT SITO WEB SETTORE FINANZA (AFFILIAZIONI) + PAGINA INSTAGRAM 3.000 FOLLOWER ORG
  • finanziario
  • 26 Lug 2024
  • Compravendita siti e domini
Risposte
0
Visite
1K
Compravendita siti e domini 26 Lug 2024
finanziario
F
G
Pagina html in stringa
  • Gian06
  • 16 Feb 2024
  • PHP
Risposte
2
Visite
2K
PHP 26 Feb 2024
Fra_23
F
L
Creare ancore interne alla pagina
  • luis45
  • 5 Lug 2023
  • PHP
Risposte
1
Visite
1K
PHP 6 Lug 2023
WmbertSea
F
Aiuto! cambio immagine di sfondo al cambio pagina
  • Fabrizio5778
  • 15 Feb 2023
  • HTML e CSS
Risposte
2
Visite
2K
HTML e CSS 15 Feb 2023
Fabrizio5778
F
Regex che trova la parola nella pagina
  • Shyson
  • 6 Feb 2023
  • jQuery
Risposte
6
Visite
2K
jQuery 23 Feb 2023
Shyson
L
Eliminazione di una pagina dalla gallery
  • lessico
  • 18 Gen 2023
  • SEO e Posizionamento
Risposte
0
Visite
2K
SEO e Posizionamento 18 Gen 2023
lessico
L
D
Apre il lightbox fuori pagina
  • djjunior
  • 2 Nov 2022
  • Javascript
Risposte
0
Visite
987
Javascript 2 Nov 2022
djjunior
D
K
posizionare variabile da pagina html all'iframe.
  • kerkut
  • 26 Ott 2022
  • Javascript
Risposte
1
Visite
1K
Javascript 26 Ott 2022
WmbertSea
R
jquery che cambia css di un elemento non mi funziona sulla pagina caricata da ajax
  • robyspider77
  • 3 Ago 2022
  • Ajax
Risposte
5
Visite
3K
Ajax 4 Ago 2022
robyspider77
R
U
Link a pagina ed esecuzione file
  • Umberto Federico
  • 22 Giu 2022
  • PHP
Risposte
0
Visite
960
PHP 22 Giu 2022
Umberto Federico
U
S
  • Bloccata
Passare query o utm alla pagina successiva
  • smg85
  • 19 Giu 2022
  • Domini
Risposte
1
Visite
1K
Domini 19 Giu 2022
Max 1
D
[Cerco] Pagina Facebook settore calcio
  • Dptm11
  • 8 Mar 2022
  • Annunci servizi di Social Media Marketing
Risposte
0
Visite
5K
Annunci servizi di Social Media Marketing 8 Mar 2022
Dptm11
D
  • Bloccata
div centrato alla pagina posto sopra ai contenuti
  • napuleone
  • 8 Gen 2022
  • HTML e CSS
Risposte
1
Visite
2K
HTML e CSS 9 Gen 2022
Max 1
G
Eliminare l'effetto refresh di una pagina internet
  • giuliox13
  • 5 Gen 2022
  • PHP
Risposte
8
Visite
2K
PHP 13 Gen 2022
giuliox13
G
L
Bing prima pagina prima riga; Google mi ignora
  • lessico
  • 4 Nov 2021
  • SEO e Posizionamento
Risposte
0
Visite
1K
SEO e Posizionamento 4 Nov 2021
lessico
L
P
Pagina modifica record che non funziona
  • precogcris
  • 28 Set 2021
  • PHP
Risposte
0
Visite
1K
PHP 28 Set 2021
precogcris
P
T
Conferma reload pagina
  • thanatos
  • 23 Set 2021
  • Javascript
Risposte
4
Visite
2K
Javascript 1 Ott 2021
thanatos
T
A
Submit senza ricaricare la pagina
  • asbarabungi
  • 1 Lug 2021
  • Ajax
Risposte
2
Visite
4K
Ajax 13 Lug 2021
MarcoGrazia
L
  • Bloccata
Problemi form Pagina php
  • Laura2002
  • 3 Mag 2021
  • HTML e CSS
Risposte
3
Visite
2K
HTML e CSS 18 Mag 2021
Max 1
Condividi:
Facebook X (Twitter) LinkedIn WhatsApp e-mail Condividi Link
  • Home
  • Forum
  • Fare Web
  • Javascript
  • Italiano
  • Termini e condizioni d'uso del sito
  • Policy Privacy
  • Aiuto
  • Home
Community platform by XenForo® © 2010-2024 XenForo Ltd. | Traduzione a cura di XenForo Italia
Menu
Accedi

Registrati

  • Home
  • Forum
    • Nuovi Messaggi
    • Cerca...
  • Novità
    • Featured content
    • Nuovi Messaggi
    • Ultime Attività
X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?

X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?