Come organizzare Javascript e AJAX con PHP?

2

Il mio javascript sta sfuggendo di mano alla mia applicazione PHP. Ho 20 tag che collegano a vari file javascript in una cartella javascript. Ogni file javascript controlla fondamentalmente un elemento sul DOM. E, se il file javascript utilizza AJAX, allora avrà un file PHP corrispondente che l'AJAX chiamerà.

Ad esempio, un file js potrebbe controllare un pulsante sulla pagina:

$(document).ready(function () {
  $("#button").live('click', function() {
    $.ajax({
      type: "POST",
      data: ...
      url: "button_click.php",
    });
  });
});

Come puoi vedere, questo sfugge di mano. Qual è il modo migliore per organizzare tutto il javascript?

    
posta egidra 12.08.2011 - 18:38
fonte

2 risposte

3

Un trucco che ho preso da una libreria JavaScript che sto usando è scrivere tutto il mio codice in file separati, ma poi usare uno script "build" separato (hanno usato PHP, io uso Python, qualunque cosa) per "compilare" i tuoi file separati in un singolo file ed esegui un minimizzatore su di esso.

All'inizio questo mi è sembrato un bel trucco, ma dopo un po 'è diventato abbastanza constrongvole. Durante lo sviluppo, punto la pagina sul singolo script non minimizzato in modo da visualizzare i numeri di riga durante il debug, quindi distribuisco lo script ridotto al minimo.

    
risposta data 14.09.2011 - 19:38
fonte
2

I dati che stai postando possono essere inclusi nel markup? Cioè.

<form action="button_click.php" method="post">
    <input type="hidden" name="data1" value="foo" />
    <input type="hidden" name="data2" value="bar" />

    <button name="button1" class="ajax-button" value="foobar">Click Me!</button>
</form>

Se possibile, puoi combinare gli eventi click in un evento dinamico, come questo:

$('.ajax-button').on('click', function() {
    var form = $(this).parent('form');

    $.ajax({
        type: "POST",
        data: form.serialize(),
        url: form.attr('action'),
    });

    return false;
});

Questo esempio POSTà i seguenti dati su button_click.php:

data1: foo,
data2: bar,
button1: foobar
    
risposta data 14.08.2011 - 18:25
fonte

Leggi altre domande sui tag