Irritatie met een Ajax script....

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Marcel Santing

Marcel Santing

06/10/2015 14:05:39
Quote Anchor link
Okee ik heb een formulier dat ik gebruik en om het een beetje flitsend te doen werk ik met jquery in combi met php.

Mijn probleem hiermee is dat hij de $_POST informatie soms niet meestuurd. Wanneer ik dan voor de tweede keer het invoer(soms zelfs de derde keer) pas dan geeft hij de $_POST info mee.

Wie kan mij helpen zoeken in de juiste richting. (ps ben net nog maar een jaar met PHP bezig)


Dit is de jquery script dat ik gebruik. Het script wacht op de submit functie, en laat dan de gebruiker zien dat hij het een en ander aan het uitvoeren is. Vervolgens pakt hij de POST data op en gooit die in het bestand js.wiewat.php

daarna spuugt hij de HTML uit van het actie script en geeft deze weer in een response veld. Tenslotte wordt de Div waar het formulier in stond opnieuw geladen.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<script>
$('#Addtab').submit(function(){
    $('#response_status').html('<b>Update status</b>');

    $.post('ajax/js.wiewat.php', $(this).serialize(), function(data){
    
        $('#show_response').html(data);
    $("#Addtab").hide();
                                
        $('#show_response').fadeIn(300);
    $('#show_response').delay(1000);
    $('#show_response').fadeOut(300);
    
        $("#division").load("./pages/wiewat/js.incident.php?info=<?php echo $info ?>");
        }).fail(function() {
            alert( 'Posting failed.' );
        });

    return false;

});
</script>

het formulier staat hier onder:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<form class="miniform" id="Addtab" method="post">
<input type="text" name="naam" placeholder="Geef naam van de groep">
<label>Selecteer beheer groep</label>
<SELECT name="afd">
<?php
    foreach($selafd as $row){ ?>

    <option value="<?php echo $row['id'] ?>"><?php echo $row['naam'] ?></option>
    <?php } ?>
    <input type="hidden" name="action" value="AddGroup">
    <input type="hidden" name="parent" value="<?php echo $info ?>">
    <input type="submit" value="toevoegen">
</form>

hier het stukje in mijn server actie script....

ff wat voor informatie...

het bestand start een sessie... vervolgens is er een BASE url gedefineerd en laad hij een config in waar mijn DB informatie staat, samen met de classes die ik gebruik. Daarna checked hij de aangemelde gebruiker, update zijn activity tijd en dan voert hij de POST uit.

aan de hand van de hidden input name="action" value="AddGroup" bepaald hij welke actie uitgevoerd moet worden.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
elseif(($_POST['action']) == "AddGroup"){
        $addafd = new Database();
        $addafd->query("INSERT INTO support_group (`naam`, `afd`, `term`) VALUES( :naam, :afd, :term)");
        $addafd->bind(':naam', $_POST['naam']);
        $addafd->bind(':afd', $_POST['afd']);
        $addafd->bind(':term', $_POST['parent']);
        $addafd->execute();
        
        echo "Groep toegevoegd";

    }

?>

Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt![/modedit]
Gewijzigd op 06/10/2015 14:18:30 door Marcel Santing
 
PHP hulp

PHP hulp

25/11/2024 01:45:54
 
Thomas van den Heuvel

Thomas van den Heuvel

06/10/2015 14:20:36
Quote Anchor link
De crux van POSTen (of iha het versturen van data) via AJAX is dat je afvangt dat de pagina met het formulier daadwerkelijk wordt gePOST (en je hiermee effectief wegnavigeert van de huidige pagina). Ik weet niet of die "return false" je (alsnog) gaat redden.

Dit (aangenomen dat return false je geen soelaas biedt) heeft tot gevolg dat je pagina wordt ververst (je hebt in je form ook geen action ingesteld, dus met een beetje geluk kom je weer op dezelfde pagina uit), alle data over wat er zich daarvoor (op de achtergrond = je AJAX POSTs) heeft afgespeeld is dan al verloren.

De standaard manier om het default gedrag af te vangen is het aanroepen van .preventDefault() bij het af te vangen event.
Gewijzigd op 06/10/2015 14:21:12 door Thomas van den Heuvel
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.