Ho una pagina principale (main.php) in PHP all'interno della quale carico dei dati di una tabella tramite Ajax sostituendo il contenuto html del div main_content.
Il contenuto richiamato è un'altra pagina php che restituisce una tabella con i dati del database.
Codice PHP:
// codice Ajax
...
// codice PHP
...
<div id="main_content"></div>
La domanda riguarda l'utilizzo di codice javascript da associare al DOM nella pagina caricata con Ajax.
Solitamente inserisco il codice javascript all'interno della pagina richiamata (list.php) dato che se lo mettessi nella pagina principale (main.php), anche aspettando il completamento del DOM, non funzionerebbe.
Ora però mi ritrovo con l'esigenza di mettere il codice javascript che deve comandare la pagina list.php proprio nella main.php perchè ho la necessità di richiamare delle funzioni della pagina principale (ad esempio list() che effettua proprio la chiamata Ajax).
Come soluzione ho trovato quella di utilizzare il metodo 'complete' di Ajax
Codice PHP:
$.ajax({
type: "POST",
url: "appuntamenti_list.php",
data: campi,
dataType: "html",
success: function(msg){
//alert("ricaricato");
$("#main_content").html(msg);
},
error: function(){
alert("Chiamata fallita, si prega di riprovare...");
},
complete: function(){
// Ordinamento
$('.sort-up, .sort-down').click(function(event) {
// Stop link behaviour
event.preventDefault();
var column = $(this).closest('th').attr('id');
if(column.length > 0) {
list(column, $(this).attr('class').split(" ")[0]);
}
});
// Attiva la freccia
$('#'+orderby + ' .'+str_sortby).addClass('active');
// Eliminazione
$('a[name="btn_delete"]').click(function(event) {
// Prevent link opening
event.preventDefault();
// Recupera l'id
var id = $(this).attr('id').substring(1);
// Open modal
$.modal({
content: "
Confermi l'eliminazione ("+id+") ?</p>",
title: 'Conferma',
buttons: {
'Sì': function(win) {
$.ajax({
type: "POST",
url: "appuntamenti_update.php",
data: "action=delete&id=" + id,
dataType: "html",
success: function(msg){
win.closeModal();
list();
},
error: function(){
alert("Chiamata fallita, si prega di riprovare...");
}
});
},
'No': function(win) { win.closeModal(); }
}
});
});
},
});
Come vedete il blocco di codice all'interno di 'complete' va ad interessare il codice in list.php.
Premesso che questo metodo funziona, volevo capire se è un metodo 'ortodosso' o meno e se ci sono altri metodi.
Grazie
ciao