Irritatie met een Ajax script....
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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>
$('#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)
1
2
3
4
5
6
7
8
9
10
11
12
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>
<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)
1
2
3
4
5
6
7
8
9
10
11
12
13
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";
}
?>
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
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