ajax post naar php

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Johnny Test

Johnny Test

26/03/2015 09:37:05
Quote Anchor link
Ik moet een javascript variabele omzetten naar een php variabele zonder page refreshes.
Hiervoor heb ik een voorbeeld code gebruikt >met een echo< om te zien of dit zou werken als ik het volledig zou maken.

ajaxtest.php
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
23
24
25
26
27
28
29
30
31
32
33
<!DOCTYPE HTML>
<html>

<head>
<script type="text/javascript" src="jquery.js"></script>
</head>

<body>
<form>
<input type="text" id="name" placeholder="Enter Your Name..." /><br />
<input type="text" id="age" placeholder="Enter Your Age..." /><br />
<input type = "button" value="Submit" onclick="post();">
</form>

<div id="result"></div>

<script type ="text/javascript">
function post()
{
    var name = $('#name').val;
    var age = $('#age').val;
    
    $.post('ajax.php', {postname:name,postage:age},
    function()
    {
        $('#result').html(data);
    });
}
</script>

</body>
</html>
 


ajax.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo "Working";
?>


Spijtig genoeg gebeurt de 'echo "working"; ' helemaal niet wanneer er op de knop gedrukt word, kan iemand mij even helpen?
Gewijzigd op 26/03/2015 09:51:29 door Johnny Test
 
PHP hulp

PHP hulp

25/04/2024 19:10:03
 
- Ariën  -
Beheerder

- Ariën -

26/03/2015 09:43:57
Quote Anchor link
Je moet wel vertellen dat alles ook geladen moet worden nadat de pagina geladen is:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$(document).ready(function(){
    /* .... HIER JE SCRIPT.... */
});


Verder is een onClick-event in JS ook overbodig, omdat jQuery zelf als een .click()-functie heeft, die door een element getriggerd kan worden.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$( "#target" ).click(function() {
   // hier je script
});
Gewijzigd op 26/03/2015 10:10:25 door - Ariën -
 
Johnny Test

Johnny Test

26/03/2015 10:53:10
Quote Anchor link
Waar zouden deze dan percies moeten staan? Ik denk nu dat het aan mijn jquery.js ligt, zelfs de kleinste oefening met het jquery bestand wil niet werken.
 
- Ariën  -
Beheerder

- Ariën -

26/03/2015 10:59:31
Quote Anchor link
Daar zal het echt niet aan liggen hoor, tenzij je er zelf in gaat editten, wat niet de bedoeling is.

Je moet om je code waar je jQuery in gebruikt dit gebruiken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$(document).ready(function(){
    /* .... HIER JE SCRIPT.... */
});


Dus uiteindelijk krijg je, als je ook het onclick laat vervallen, het volgende script:

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
<script type ="text/javascript">
 $(document).ready(function(){
    $( "#submit" ).click(function() {
           var name = $('#name').val();
            var age = $('#age').val();
    
            $.post('ajax.php', {postname:name,postage:age},
            function()
            {
                $('#result').html(data);
            });
    });
});
</script>


Dan moet je zelf nog wel even een id="submit" aan je submit-button toevoegen.
Nog mooier is als je deze code in een apart .js-bestand zet en deze inlaadt.
Gewijzigd op 26/03/2015 11:02:09 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

26/03/2015 13:18:27
Quote Anchor link
@code topicstarter
Je krijgt een JavaScript foutmelding, wat al een aardige hint zou moeten zijn:
Quote:
Error: ReferenceError: data is not defined

Daarnaast zou je jQuery-JavaScript kunnen / moeten schrijven in een unobtrusive manier, oftewel, vervuil je HTML-code niet met JavaScript (onclick etc.) als dit niet hoeft.

@code Aar
Het event wat je wilt "afvangen" is de form submit.

Vervolgens moet het formulier niet gesubmit worden, wat wel zou gebeuren als niet alles afgevangen werd met een "onClick", maar:

En tot slot moet je de data die je teruggeeft ook doorgeven, wat nu niet gebeurt (de callback-functie heeft geen parameters).

Daarnaast: als je de formulier-velden voorziet van een name-attribuut (wat volgens mij ook verplicht is?) dan kun je alle formuliervelden in 1x samennemen met .serialize().

Al deze punten gecombineerd:
index.htm
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
23
24
25
26
27
28
29
30
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
<script type="text/javascript" src="https://code.jquery.com/jquery-1.11.2.min.js"></script>
</head>

<body>
<form id="form" accept-charset="UTF-8">
<input type="text" name="name" placeholder="Enter Your Name..." /><br />
<input type="text" name="age" placeholder="Enter Your Age..." /><br />
<button type="submit">Submit</button>
</form>
<div id="result"></div>

<script type="text/javascript">
//<![CDATA[
$().ready(function() {
    $('#form').submit(function(e) {
        e.preventDefault(); // voorkom het daadwerkelijk submitten
        $.post('ajax.php', $('#form').serialize(), function(data) { // geef data ook mee aan callback...
            $('#result').html(data);
        });
    });
});
//]]>
</script>
</body>
</html>


ajax.php
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
<?php
// geef ook aan wat je teruggeeft...
header('Content-Type: text/html; charset=UTF-8');

function
escape($in) {
    return htmlspecialchars($in, ENT_QUOTES, 'UTF-8');
}


if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    ?>
<pre><?php echo print_r(array_map('escape', $_POST), true) ?></pre><?php
} else {
    ?>
<p>script was not called through POST</p><?php
}
?>
 
- Ariën  -
Beheerder

- Ariën -

26/03/2015 13:55:13
Quote Anchor link
Daar heb je gelijk in, dat is nog wat correcter. Gelukkig ben ik om 11 uur ook direct aan de koffie gegaan ;-)
 
Johnny Test

Johnny Test

27/03/2015 11:29:14
Quote Anchor link
bedankt voor de hulp :)
 



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.