Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    340

    jquery evento change che non riesco a leggere....

    Ciao ragazzi, quando non so piu' che pesci prendere mi rivolgo al forum, in cerca di un aiuto.
    ho un campo text che ha il valore non digitato, ma arriva dalla selezione di una table.
    Questa ha un td con id record, che cliccato mi restituisce il numero id che va' ad inserirsi nel campo text. Qui mi nasce il problema, ho anche provato ad inviare il dato in $post e inserirlo in $_SESSION ma essendo una chiamata asincrona non viene aggiornato, il secondo click ha ancora il valore del primo!!
    QUindi la soluzione e' usare il valore del campo text.
    Pensavo ad uno script con .change ma non riesco ad intercettarlo.
    La parte di codice interessata e' questa:
    Codice PHP:
     <tr id="<?php echo $row['id'];?>" class="idArticolo" > <td class="codice"><?php echo $row['id_articolo']; ?> </td> 
     <td><a href="#" class="modifica" ><img src="../ico/modifica.png" alt="modifica" /></a></td>  
    </tr>
    Al click attivo lo script che ha queste righe
    codice:
      $('.modifica').each(function(index){
           $(this).click(function(){
             var ID_art = $("table td.codice").eq(index).text();
              );
        
          $("#codarti").val(ID_art);
    fin qua, il campo text viene regolarmente popolato dal valore selezionato.
    Ora dovrei poter usare questo codice per inviarlo ad uno script che preleva
    dal mysql i dati di descrizione, categoria, prezzo ed immagine.
    Quindi pensavo di poterlo gestire anche con una chiamata ajax mettendo il codice
    in sessione per poterlo leggere e gestire, ma mi sto incasinando!!

    codice:
                                       
     $.ajax({
          type: "GET",
           url: "../articoli/dato_session.php",
           data: "id=" + ID_art,
           dataType: "html",
           success: function(msg)
         {
         $("#result").html(msg); 
             },
           error: function()
                          {
                            alert("Chiamata fallita, si prega di riprovare..."); 
                          }
                        });
                          
                          $('#overlay').fadeIn('fast');
                         $('#box').fadeIn('slow');
                      });
               });
    ma il primo ciclo e' corretto, ovviamente le chiamate successive mi danno sempre il primo codice
    a meno che non aggiorni il browser!
    Quindi ho pensato di impostare un .change al campo #result, ma non mi funziona.
    Scusate se mi sono dilungato ma vorrei far capire bene perche' mi sto perdendo in un bicchiere d'acqua, ma non capisco perche' questo script non mi funziona.
    codice:
    $('#result').change(function(){
    alert("cambiato");
     });

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    340
    nessuno mi sa consigliare come utilizzare il codice contenuto nel div result??

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    340
    OK, l'evento change non viene visto, ma posso simulare un click con trigger e gestisco il .click che invece funziona.
    Ma tutto questo mi sembra veramente troppo "viziato" non mi piace troppi giri, solo per leggere il contenuto del div result!
    Mi potete dare qualche informazione? cosa studiare per risolvere meglio la cosa?
    Grazie.

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Forse è che non si capisce cosa stai facendo o vorresti fare
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    340
    come darti torto!! non ci capisco piu' nulla neppure io!
    Ho una div result che contiene il codice cliccato dalla tabella.
    Non so come leggere questo codice e portarlo in una function per la decodifica dal db, da dove devo prendere descrizione,categoria etc...
    Cosa devo usare per leggere il contenuto della div?
    Con ajax lo porto con dati POST e memorizzo in una SESSION ma dovrei fare un refresh della pagina... non so come risolvere.

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Il risultato della pagina oltre a creare una session dovrai stamparlo con un echo così d'aver è una stringa da mostrare nel div, se non è chiaro posta il blocco pop dove crei la session
    Ultima modifica di cavicchiandrea; 25-05-2015 a 07:30
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    340
    Grazie per la tua pazienza, le tue risposte mi sono chiare, sono io che non riesco a spiegarmi.
    nel blocco div ho un valore, quello che non so come gestire e' proprio questo. Non so se in php o in jquery, esiste
    qualcosa che mi permetta di mettere quel risultato in una stringa utilizzabile nello script interno.
    Codice PHP:
    <div id="result"></div
    questa div ha un valore ="ABCD" ma non so come portarla dentro un $valoredautilizzare.
    In modo da poterla inviare a : get_dati_articolo($valoredautilizzare).
    Nella function get_dati_articolo($valoredautilizzare){ .... }
    mi collego al db ed estraggo le informazioni...
    Vorrei poterlo fare in questo modo, l'ho fatto in ajax prendendo il valore con $_POST e faccio tutto da li'.
    Ma e' sempre uno script esterno. Speravo in una funzione interna, ma se non e' possibile, pazienza.....

  8. #8
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Posta il link alla pagina pubblica, forse vendendo lo script in esecuzione capisco
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  9. #9
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,539
    Ciao,
    scusami ma non mi è troppo chiaro quello che vuoi fare forse, ma se hai bisogno di leggere il risultato della chiamata ajax ti basta manipolare la success della chiamata.
    codice:
    $.ajax({
          type: "GET",
           url: "../articoli/dato_session.php",
           data: "id=" + ID_art,
           dataType: "html",
           success: function(msg)
         {
                  $("#result").html(msg);//msg contiene il risultato della chiamata (la tua stringa).
                  //es: get_dati_articolo(msg) //magari dovrai estrapolare il risultato, dipende da cosa restituisce la chiamata
             },
           error: function()
                          {
                            alert("Chiamata fallita, si prega di riprovare..."); 
                          }
                        });
                          
                          $('#overlay').fadeIn('fast');
                         $('#box').fadeIn('slow');
                      });
               });
    mi da l'impressione che non abbia ben chiaro il funzionamento di ajax. Magari mi sbaglio (scusa nel caso) ma forse è meglio se spendiamo due parole.
    In pratica il flusso dovrebbe essere questo :
    chiamata ajax->elaborazione server->invio risultato al client (success)->manipolazione degli elementi del client.
    Il primo step vedo che lo hai già fatto.
    Il secondo immagino non abbia grandi problemi.
    Terzo step: L'unica cosa forse da menzionare e come passare il risultato dal server al client, ovvero: la risposta sta nel flusso della pagina che invii al client. Un po come se fosse una pagina normale (il server invia la pagina elaborata al client), anche se in genere si usa creare una risposta json. In pratica al posto di restituire una pagina con tanto di tag html (anche se lo puoi fare comunque), invii una pagina contenente anche solo json. Questi dati risultanti saranno letti dalla funzione success della funzione ajax.
    Quarto step: Quando ricevi il risultato dalla chiamata ajax puoi manipolare gli elementi html tramite js o jquery. Quindi aggiungere/togliere elementi ecc.
    Un consiglio:
    Se devi manipolare molto spesso elementi della pagina lato client, sopratutto se si tratta di liste o comunque parti dinamiche che tendono a cambiare spesso lato client senza postback (quindi senza che sia il server ad elaborare e restituire elementi, come avviene per le SPA), ti conviene utilizzare librerie che ti consentono il binding degli elementi con i dati. Una di queste (che personalmente reputo tra le migliori) è Knockout.
    Ultima modifica di U235; 25-05-2015 a 12:18

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    340
    Ciao, grazie per la risposta, la situazione e' come l'hai descritta. la pagina dato_session.php e' una semplice pagina php+html che mi fa' vedere all'interno della div "result" tutte le informazioni estrapolate dal db. Questo e' il modo comune con cui uso ajax, (io lo uso cosi', forse sbagliando..) La mia idea era quella di evitare la costruzione esterna alla pagina index.php, invece di farlo nella pagina dato_session.php speravo di riuscire a farlo sempre all'interno della pagina index.php.
    Sto solo cercando di migliorare l'uso di php e ajax, speravo di trovare un modo per portare in una variabile il codice.
    Inizialmente ho usato dato_session.php solo per mettere in $_SESSION il valore, ma ovviamente, devo refreshare la pagina se voglio
    avere l'informazione aggiornata. quindi non mi serve.
    Ma mi pare proprio di capire che non vi e' modo di farlo se non come abbiamo gia' visto.
    Grazie a tutti comunque per le spiegazioni, sempre molto istruttive.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.