JQuery: Input Feld im dynamisch geladenem Inhalt befüllen


Gray

Erfahrenes Mitglied
#1
Hi,

Ich habe eine Seite in der per insertBefore und Ajax eine zweite Seite geladen wird (beliebig oft).
Nun gibt es in dieser geladenen Seite ein Inputfeld welches ich gerne nach dem laden befüllen will.

Mein Problem ist das absolut nichts passiert, auch keine Fehlermeldung.


Javascript:
$.ajax({
        url: 'die_zu_ladende_seite.php',
        processData: false,
        contentType: false,
        type: 'POST',
        success: function(response){
            $(response).insertBefore('.ende');
        }
    });
    
    var dauer = $("#hier_kommt_der_wert_her").val();
    $(".dieses_feld_gibt_es_in_jeder_der_geladenen_dateien").val(dauer);
Aus dem Feld mit der ID "hier_kommt_der_wert_her" kommt der Inhalt welcher dann jeweils im Feld mit der Klasse "dieses_feld_gibt_es_in_jeder_der_geladenen_dateien" drin stehen soll. Das Feld "dieses_feld_gibt_es_in_jeder_der_geladenen_dateien" kommt aus der Datei "die_zu_ladende_seite.php".

THX
 

Sempervivum

Erfahrenes Mitglied
#2
Häufiges Problem. Ajax arbeitet asynchron, d. h. Du rufst $.ajax auf, dann wird die Anfrage an den Server geschickt und es dauert einen kurzen Moment bis die Antwort eintrifft. Deshalb existiert das Element $(".dieses_feld_gibt_es_in_jeder_der_geladenen_dateien")noch nicht, wenn Du die Anweisungen direkt nach dem $.ajax-Aufruf notierst. Du musst sie in den success-Callback legen:
Code:
    $.ajax({
        url: 'die_zu_ladende_seite.php',
        processData: false,
        contentType: false,
        type: 'POST',
        success: function(response){
            $(response).insertBefore('.ende');
            var dauer = $("#hier_kommt_der_wert_her").val();
            $(".dieses_feld_gibt_es_in_jeder_der_geladenen_dateien").val(dauer);        }
    });