ugrás a tartalomhoz

Ajax form kezelési probléma - egymásba ágyazott ajax meghívás

Theo76 · Szep. 8. (V), 16.02
Sziasztok!

Egy mvc felületen dolgozok, azon belül is a telepítő szkriptjén.
A telepítés menetét több részre bontottam:
- Adatbázis sezerver létrehozása
- Szerver beállítás
- SMTP szerver beállátás

A szerverbeállításnál az időzónát, és a rendszer adminisztrátor adatai

Mivel az adatbázis beaállítása többlépcsős folyamat, így ajax-al kezeltetem a formban megadott adatok feldolgozását, majd a további folyamat fázis kezelését. Minden egyes fázis végeztével egy divbe kiíratom a státuszát, hogy épp folyamatban van, sikeres, vagy épp sikertelen. Így könnyebben nyomonkövethetem, ha valahol elakadás van, és ha épp egy folyamat lassabb, akkor is látom, hogy pont min dolgozik. Miután lezárult, meghívja az új formot, amit az előző helyére tölt be.
Eddig a pontig teljesen jól működik, de az új form már nem érzékeli az ajaxot. Hiba üzenet nincs. A szerverbeállítási formnál próbálkoztam új ajax kezelő kóddal is. de nem indítja el. alert()-el ellenőriztem, az a kód betöltődik, de az ajaxhvás már nem történik meg mikor rákattintok a submit gombra.
Gondoltam az ob_start()-ra is, de az sajnos nem működik, úgynúgy a csak script lefutásának a legvégén írja ki az adatokat, nem pedig közben. Ezért maradtam az ajaxnál.

Az ajax kódja:

$( document ).ready( function() {

    var jQueryInstallForm   = "#jqInstallForm";
    var outputContent       = "#outputContent";
    var workingContent      = "#working";
    var mainContent         = "#installContent";

    $( jQueryInstallForm ).submit( function(e){
        var targetSelf = "#content";
        var jQFormControll = "source";
        var $controll = ( $( jQueryInstallForm ).data( jQFormControll ) ) ? "#" + $( jQueryInstallForm ).data( jQFormControll ) : targetSelf;
        var $dest = ( typeof $( this ).attr( 'data-dest' ) === 'undefined' ) ? 'working' : $( this ).attr( 'data-dest' );
        var $data = $( this ).serialize().replace( /(\.\.%2F\.\.)/gi, "" );

        $( "#submit" ).prop( 'disabled', true );

        $.ajax({
            url:        $( this ).attr( 'action' ),
            type:       $( this ).attr( 'method' ),
            data:       $data,
            mimeType:   "multipart/form-data",

/**
 * Az Adatbázis létrehozása
 */
            success: function( response ) {
                var jsonResponse = false;
                jsonResponse = convertToJSON( response );

                if ( jsonResponse !== false ) {
                    response = jsonResponse;
                } else {
                    var response = {"html": response};
                    $( mainContent ).html( response.html );
                }

                $( $controll ).append( response.html );
                $( workingContent ).html( 'Install/setInstallStatus/1' );

                if ( typeof response.installer !== 'undefined' ) {
                    $.ajax({
                        url: response.url,
    /**
     * Adattáblák létrehozás
     */
                        success: function( response ) {
                            jsonResponse = convertToJSON( response );

                            if ( jsonResponse != false ) {
                                response = jsonResponse;

                                var result = createStatus( "Adattáblák létrehozása", response );

                                if ( result === "0" ) {
                                    return false;
                                }

                                $( workingContent ).html( 'Install/setInstallStatus/1' );
                            } else {
                                var response = {"html":response};
                            }

                            $( $controll ).append( response.html );


                            $.ajax({
                                url: response.url,
    /**
     * Adatok feltöltése
     */
                                success: function( response ) {
                                    jsonResponse = convertToJSON( response );

                                    if ( jsonResponse !== false ) {
                                        response = jsonResponse;

                                        var result = createStatus( "Adattáblák feltöltése", response );

                                        if ( result === "0" ) {
                                            return false;
                                        }

                                        $( workingContent ).html( 'Install/setInstallStatus/2' );
                                        $( mainContent ).html( response.html );
                                    } else {
                                        var response = {"html":response};
                                        $( $controll ).append( response.html );
                                    }
                                }
                            });
                        }
                    });
                } else {
                    
                }
            }
        });

        return false;
    });
});

function createStatus( text, response ) {
    var $status, $class;
    var lastChar = response.progress[response.progress.length -1];
                                    
    if ( response.status == "1") {
        $status = "<i>Kész.</i>";
        $class  = "Success";
    } else {
        $status = "<i><b>Hiba!</b></i>";
        $class  = "Error";
    }

    $( ".outputTitle" + lastChar ).html( "<b>" + text + " (" + response.totalCount + "/" + response.count + " hiba: " + response.errorCount + "):</b>" );
    $( "." + response.progress ).attr( 'id', 'ctrlDispMessageStatus' + $class );
    $( "." + response.progress ).html( $status );

    if ( response.status !== "1") {
        $( "#submit" ).prop( 'disabled', false );
        return "0";
    } else {
        return "1";
    }
}