Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    JS non esegue funzioni su bottoni stampati da chiamata AJAX

    Buon giorno, forse il titolo spiazza un po ma sicuramente la problematica è di facile risoluzione per voi che siete più esperti di me in JS.

    Io tramite questa chiamata AJAX interrogo una pagina PHP che mi restituisce determinati valori sotto forma di oggetto JSON. Una volta ricevuto questo oggetto io devo stamparlo a video in modalità di tabella.

    Ovviamente per ogni riga ci sono delle azioni, quali elimina anagrafica, aggiorna anagrafica, ecc.. Per ogni tdella tabella, o meglio per ogni record che ricevo, io stampo, sempre tramite la stessa chiamata ajax, questi bottoni per le azioni.

    Il problema è appunto che non essendo stati caricati nel DOM al momento del caricamento della pagina se provo a legare una funzione semplice, ad esempio:

    codice:
    $(".btn").click(function(){
    
      alert("ciao");
    
    });
    Non me la esegue.

    Capisco che il motivo è quello sopra specificato ma esiste una soluzione?
    Oppure esiste un altra strada da intraprendere?

    Di segueito la chiamata AJAX:

    codice:
    function onstart_get_anagen(result_store){
    
    
    		$.ajax({
    			url: "AJAX_supporto_pannello_anagrafica.php",
    			async: true,
    			type: "POST",
    			dataType: "json",
    			data: "start=1",
    
    
    			success: function(Risposta){
    
    
    				
    				if ( Risposta[0].response == true && Risposta[0].row > 0 ){
    					
    					var rows = Risposta[0].row;
    
    
    
    
    					for ( var i = 1; i <= Risposta.length; i++ ){
    						
    							
    							var id_anagen = Risposta[i].id_anagen;
    									var nome_cognome = Risposta[i].nome_cognome;
    										var ragione_sociale = Risposta[i].ragione_sociale;
    											var partita_iva = Risposta[i].partita_iva;
    												var indirizzo = Risposta[i].indirizzo;
    													var provincia = Risposta[i].provincia;
    														var telefono = Risposta[i].telefono;
    															var id_pagamento = Risposta[i].id_pagamento;
    																var id_amministratore_condominio = Risposta[i].id_amministratore_condominio;
    																	var cellulare = Risposta[i].cellulare;
    																		var codice_fiscale = Risposta[i].codice_fiscale;
    																			var email = Risposta[i].email;
    																
    								//CORPO TABELLA
    									bootstrap_table = "<tr>";
    										
    										bootstrap_table += "<td> <b> " + id_anagen + " </b> </td>";
    										bootstrap_table += "<td>" + nome_cognome + "</td>";
    										bootstrap_table += "<td>" + ragione_sociale + "</td>";
    										bootstrap_table += "<td>" + partita_iva + "</td>";
    										bootstrap_table += "<td>" + codice_fiscale + "</td>";
    										bootstrap_table += "<td>" + indirizzo + "</td>";
    										bootstrap_table += "<td>" + provincia + "</td>";
    										bootstrap_table += "<td>" + telefono + "</td>";
    										bootstrap_table += "<td>" + cellulare + "</td>";
    										bootstrap_table += "<td> <a href='mailto:" + email + "'>" + email + "</td>";
    										bootstrap_table += "<td> <button class='btn btn-xs btn-default update_anagen' > <span class='glyphicon glyphicon-pencil'> </span> </button> </td>";
    										bootstrap_table += "<td> <button class='btn btn-xs btn-danger delete_anagen'  > <span class='glyphicon glyphicon-trash'> </span> </button> </td>";
    									
    										
    									bootstrap_table += "</tr>";
    								//FINE CORPO TABELLA	
    									
    
    
    								$(result_store).html(bootstrap_table);
    					}
    
    
    					
    				}else if ( Risposta[0].response == false && Risposta[0].row == 0 ){
    					
    					$(result_store).html("No result");
    					
    				}
    
    
    				
    				
    			},
    			
    			error: function(){
    			  alert("Errore, non è possibile accedere alla risorsa desiderata.");
    			}
    			
    		});
    }

  2. #2
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Potrebbe tornarti utile questo . In questo modo puoi bindare anche elementi generat in un secondo momento.
    Il classico bind di funzioni/azioni tipo appunto click() funziona su qualcosa che già esiste.

    Nelle opzioni di on() puoi anche usare una forma differente se non dovesse andare nella forma più classica (questa):
    codice:
    $('tuo_selettore').on('click', function(){});
    Seconda opzione
    codice:
    $('selettore_elemento_esistente_in_partenza').on('click', 'tuo_selettore', function(){});

  3. #3
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    invece di

    codice:
    $('selettore_elemento_esistente_in_partenza').on('click','tuo_selettore',function(){})
    farei
    codice:
    $(document).on('click','tuo_selettore',function(){})
    
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  4. #4
    Grazie a tutti e due, avevo già risolto adottando questa soluzione:

    codice:
    $('selettore_elemento_esistente_in_partenza').on('click','tuo_selettore',function(){});

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.