Jquery form versturen naar PHP (Opgelost)
sanderrebry - 31/10/2013 09:33 (laatste wijziging 31/10/2013 10:48)
Lid
Ik heb een jquery script die een form verstuurd naar een PHP pagina.
In het form zijn meerdere knoppen: bereken mijn prijs en bestellen.
Op de php pagina wil ik graag laten controleren op welke knop is gedrukt
(IF $_POST['bestellen']...IF $_POST['bereken'])... hoe kan ik dit doen?
<script type="text/javascript">
jQuery(document).ready(function(){
jQuery('#but').click(function(){
var querystring = jQuery('#form').serialize();
jQuery('#txtHint').css('border','solid thin grey');
jQuery('#txtHint').html(querystring);
jQuery.ajax({
type:"POST",
url: "http://studiowebvision.be/demuynck/script-paginas/berekening",
cache:false,
data: querystring,
success: function(data){
jQuery("#txtHint").html(data);
}
});
});
});
</script>
< script type= "text/javascript" >
jQuery( document) .ready ( function ( ) {
jQuery( '#but' ) .click ( function ( ) {
var querystring = jQuery( '#form' ) .serialize ( ) ;
jQuery( '#txtHint' ) .css ( 'border' , 'solid thin grey' ) ;
jQuery( '#txtHint' ) .html ( querystring) ;
jQuery.ajax ( {
type: "POST" ,
url: "http://studiowebvision.be/demuynck/script-paginas/berekening" ,
cache: false ,
data: querystring,
success: function ( data) {
jQuery( "#txtHint" ) .html ( data) ;
}
} ) ;
} ) ;
} ) ;
</ script>
Iemand een idee?[/code]
8 antwoorden
Gesponsorde links
marten - 31/10/2013 09:37
Beheerder
In principe worden alle POST variabelen meegestuurd. Echter alleen van de knop welke geklikt is wordt ook de value van meegestuurd. Dus je kan als volgt controleren:
if(isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['bestellen']) && $_POST['bestellen'] != '') {
// hier je code voor bestellen
} elseif(isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['bereken']) && $_POST['bereken'] != '') {
// hier je code voor bereken
}
if ( isset ( $_SERVER [ 'REQUEST_METHOD' ] ) && $_SERVER [ 'REQUEST_METHOD' ] == 'POST' && isset ( $_POST [ 'bestellen' ] ) && $_POST [ 'bestellen' ] != '' ) { // hier je code voor bestellen
} elseif ( isset ( $_SERVER [ 'REQUEST_METHOD' ] ) && $_SERVER [ 'REQUEST_METHOD' ] == 'POST' && isset ( $_POST [ 'bereken' ] ) && $_POST [ 'bereken' ] != '' ) { // hier je code voor bereken
}
sanderrebry - 31/10/2013 10:03 (laatste wijziging 31/10/2013 10:47)
Lid
<html><head><script src="http://code.jquery.com/jquery-latest.min.js"
type="text/javascript"></script><script type="text/javascript">
$(document).ready(function(){
$('#verstuur,#bereken').click(function(){
var querystring = $('#form').serialize();
$('#txtHint').css('border','solid thin grey');
$('#txtHint').html(querystring);
$.ajax({
type:"POST",
url: "action.php",
cache:false,
data: querystring,
success: function(data){
$("#txtHint").html(data);
}
});
});
});
</script></head>
<body>
<form method='post' id='form' name='form'>
<div style='margin:10px; padding:5px;' id='txtHint'></div>
<input type='button' id='verstuur' name='bestellen' value='Bestellen' /><input type='button' id='bereken' name='bereken' value='Bestellen' />
</form></body></html>
type = "text/javascript" ></ script ><script type = "text/javascript" > $(document).ready(function(){
$('#verstuur,#bereken').click(function(){
var querystring = $('#form').serialize();
$('#txtHint').css('border','solid thin grey');
$('#txtHint').html(querystring);
$.ajax({
type:"POST",
url: "action.php",
cache:false,
data: querystring,
success: function(data){
$("#txtHint").html(data);
}
});
});
});
<form method = 'post' id = 'form' name = 'form' > <div style = 'margin:10px; padding:5px;' id = 'txtHint' ></ div > <input type = 'button' id = 'verstuur' name = 'bestellen' value = 'Bestellen' / ><input type = 'button' id = 'bereken' name = 'bereken' value = 'Bestellen' / >
de action.php
<?php
if(isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['bestellen']) && $_POST['bestellen'] != '') {
echo "test";
}
elseif(isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['bereken']) && $_POST['bereken'] != '') {
// hier je code voor bereken
echo "testeeee";
}
?>
<?php
if ( isset ( $_SERVER [ 'REQUEST_METHOD' ] ) && $_SERVER [ 'REQUEST_METHOD' ] == 'POST' && isset ( $_POST [ 'bestellen' ] ) && $_POST [ 'bestellen' ] != '' ) {
}
elseif ( isset ( $_SERVER [ 'REQUEST_METHOD' ] ) && $_SERVER [ 'REQUEST_METHOD' ] == 'POST' && isset ( $_POST [ 'bereken' ] ) && $_POST [ 'bereken' ] != '' ) { // hier je code voor bereken
}
?>
Dit werkt niet....
Joel - 31/10/2013 10:08
Eigenaar
Ever naast de kwestie, waarom zit je daar al je HTML & Javascript te echo-en? Je kan je PHP tag gerust even afsluiten, je JavaScript daar plaatsen zonder escapes "\", en terug je PHP starten wanneer nodig.
<?php
echo "blabla";
?>
<b>blabla</b>
<?php
echo "en we zijn weer vertrokken";
?>
<?php
?>
<b>blabla</b>
<?php
echo "en we zijn weer vertrokken" ; ?>
Dit zorgt er voor dat onder andere de color highlighting wordt toegepast op je code, zodat wij de code gemakkelijker kunnen parsen in ons hoofd.
sanderrebry - 31/10/2013 10:43 (laatste wijziging 31/10/2013 10:43)
Lid
Werd aangepast...maar doe het nog steeds niet..
Wijnand - 31/10/2013 10:52 (laatste wijziging 31/10/2013 10:52)
Moderator
1. Krijg je een JS foutmelding?
2. Probeer eens in action.php:
<?php
echo '<pre>';
print_r($_POST);
print_r($_GET);
echo '</pre>';
?>
Wat krijg je dan te zien?
sanderrebry - 31/10/2013 11:25
Lid
Nee werkt nog steeds niet.. ik krijg geen output van de pagina action.php... ik snap er niets van.. De bedoeling is wanneer ik op knop 1 druk dat in de pagina action if($_POST['knop1']) dan... als er op andere knop gedrukt is naar het andere ifje...
Wijnand - 31/10/2013 11:40
Moderator
Ik heb zelf even jouw code gepakt en getest en inderdaad werken al die dingen niet. Het probleem is dat die buttons (en ook submits) niet meegestuurd worden. Als je een ander input-veld erin zet wordt die wel meegestuurd, ook met jouw code! Die code was dus goed. Nu heb ik hem verder uitgebreid en nu zou het echt goed moeten werken (net getest).
Mijn code in totaal is dit:
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#verstuur,#bereken').click(function(){
var querystring = $('#form').serialize();
querystring += '&' + $(this).attr('name') + '=clicked';
$('#txtHint').css('border','solid thin grey');
$('#txtHint').html(querystring);
$.ajax({
type:"POST",
url: "action.php",
cache:false,
data: querystring,
success: function(data){
$("#txtHint").html(data);
}
});
});
});
</script>
</head>
<body>
<form method='POST' id='form' name='form' action="">
<div style='margin:10px; padding:5px;' id='txtHint'></div>
<input type="hidden" name="test" id="test" value="jaja" />
<input type='button' id='verstuur' name='bestellen' value='Bestellen' />
<input type='button' id='bereken' name='bereken' value='Berekenen' />
</form>
</body>
</html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
< script type= "text/javascript" >
$( document) .ready ( function ( ) {
$( '#verstuur,#bereken' ) .click ( function ( ) {
var querystring = $( '#form' ) .serialize ( ) ;
querystring += '&' + $( this ) .attr ( 'name' ) + '=clicked' ;
$( '#txtHint' ) .css ( 'border' , 'solid thin grey' ) ;
$( '#txtHint' ) .html ( querystring) ;
$.ajax ( {
type: "POST" ,
url: "action.php" ,
cache: false ,
data: querystring,
success: function ( data) {
$( "#txtHint" ) .html ( data) ;
}
} ) ;
} ) ;
} ) ;
</ script>
</head>
<body>
<form method='POST' id='form' name='form' action="">
<div style='margin:10px; padding:5px;' id='txtHint'></div>
<input type="hidden" name="test" id="test" value="jaja" />
<input type='button' id='verstuur' name='bestellen' value='Bestellen' />
<input type='button' id='bereken' name='bereken' value='Berekenen' />
</form>
</body>
</html>
Bedankt door: marten , sanderrebry
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.