php session werkt niet correct op 2e pagina

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2 3 volgende »

Ozzie PHP

Ozzie PHP

12/08/2020 23:40:27
Quote Anchor link
>> Heb ik in de index geplaatst en dan krijg ik de melding "nothing here yet. Als ik pagina vernieuw zie ik de juiste waarde.

Is het probleem nu opgelost dan?
 
PHP hulp

PHP hulp

22/11/2024 13:46:59
 
Roy B

Roy B

12/08/2020 23:47:02
Quote Anchor link
Ozzie PHP op 12/08/2020 23:40:27:
>> Heb ik in de index geplaatst en dan krijg ik de melding "nothing here yet. Als ik pagina vernieuw zie ik de juiste waarde.

Is het probleem nu opgelost dan?


Nee want ik zou graag zien dat de waarde uit zichzelf veranderd zodra de waarde in de dropdowns veranderen. Als ik de pagina vernieuw zie je de waarde wel maar ben je de rest kwijt.
 
Ozzie PHP

Ozzie PHP

13/08/2020 12:13:21
Quote Anchor link
>> Nee want ik zou graag zien dat de waarde uit zichzelf veranderd zodra de waarde in de dropdowns veranderen.

En wat heb je gedaan om dat te bereiken? Hoe ziet je code er nu uit?
 
Roy B

Roy B

13/08/2020 12:49:45
Quote Anchor link
Ozzie PHP op 13/08/2020 12:13:21:
En wat heb je gedaan om dat te bereiken? Hoe ziet je code er nu uit?



index.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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<?php
// Start the session
session_start();

error_reporting(E_ALL);
ini_set('display_startup_errors', true);
ini_set('display_errors', 'stdout');

?>

<div>
<table>
  <thead>
    <tr>
      <th scope="col">Huidige situatie</th>
      <th scope="col">Na renovatie</th>
      <th scope="col">Besparing</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td data-label="Huidige situatie">
      <label>Isolatie :</label>
    <select id="isolatie_huidig" name="isolatie_huidig" class="isolatie_huidig">
        <option value="10000">Selecteer isolatie</option>  
        
        <?php
     include('database.php');
         $result = mysqli_query($con,"select * from isolatie_huidig");
         while($row=mysqli_fetch_array($result))
        {

        echo '<option value="'.$row['huidig_id'].'">'.$row['huidig_status'].'</option>';
        }

    ?>

     </select>
      </td>
      <td data-label="Na renovatie">
         <label>Isolatie na renovatie</label>
         <select id="isolatie_renovatie" name="isolatie_renovatie" class="isolatie_renovatie" >
         <option>Selecteer isolatie</option>
         </select>
      </td>
      <td data-label="Besparing">
                
      <?php
           if (isset($_SESSION['besparen'])) {
               echo $_SESSION['besparen'];
           }
else {
               echo 'niets';
           }

          
    ?>

        </td>
    </tr>  
  </tbody>
</table>

<p id="resultaat"></p>
    <br/><br/>

</div>


<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>

<script>
$(document).ready(function()
{
    $("#isolatie_huidig").change(function()
    {
        var huidig_id = $(this).val();
        var post_id   = 'id='+ huidig_id;
        $.ajax ({
            type: "POST",
            url: "http://www.eenwebsitemetwordpress.nl/wp-content/themes/breno-child/besparingscalculator/isolatie.php",
            data: post_id,
            cache: false,
            success: function(isolatie)
            {
                $("#isolatie_renovatie").html(isolatie);
                singleSelectChangeValue();
                getCalcValues( post_id );
            }
        });
    });
});

$("#isolatie_renovatie").change(function()
    {
    var huidig_id = $(this).val();
    var post_id   = 'id='+ huidig_id;
    getCalcValues( post_id );
});

function getCalcValues( test )
{
    $.ajax ({
        type: "POST",
        url: "http://www.eenwebsitemetwordpress.nl/wp-content/themes/breno-child/besparingscalculator/isolatie_calc.php",
        data: test,
        cache: false,
        success: function(resultaat)
        {
            $("#resultaat").html(resultaat);
        }
    });
}


function singleSelectChangeValue()
{
    var selObj   = document.getElementById("isolatie_renovatie");
    var selValue = selObj.options[selObj.selectedIndex].value;
    var selText  = selObj.options[selObj.selectedIndex].text;
}

</script>


isolatie_calc.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
34
35
36
37
38
39
40
41
42
<?php
session_start();
error_reporting(E_ALL);
ini_set('display_startup_errors', true);
ini_set('display_errors', 'stdout');

if (isset($_SESSION['besparen'])) {
    echo $_SESSION['besparen'];
}
else {
    echo 'nothing here yet';
}


?>


<?php




include('db.php');
if( $_POST['id'] )
{

    $id = $_POST['id'];
    
    $default_besparing = 0.00;
    $besparing_dakisolatie = 0.00;
    $textenergielabel = 'Uw energielabel wordt: ';
    
    $besparing = $con->query('SELECT besparingsbedrag FROM isolatie_renovatie WHERE huidig_id = "' . $id . '";' );
  
        $row = $besparing->fetch_row();
      $besparing_ses = $row[0];
    $_POST['$besparing_dakisolatie'] = $default_besparing + $besparing_ses;
        $_SESSION['besparen'] = number_format($_POST['$besparing_dakisolatie'], 2, ",", ".");
    
    echo 'Uw besparing per jaar voor dit is: €'; echo $_SESSION['besparen'];
    echo '<br/><br/>';
        
}



?>



isolatie.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
34
35
36
37
38
39
40
41
42
<?php
session_start();
error_reporting(E_ALL);
ini_set('display_startup_errors', true);
ini_set('display_errors', 'stdout');
?>



<?php
include('db.php');

if( $_POST['id'] )
{

    $id = $_POST['id'];
    $options = '';
    
    if ( $id <= 9999 )
    {

        if ( $id == 1 )
        {
        
              $result = $con->query("SELECT * FROM isolatie_renovatie");
            
        }
else {
                        
              $result = $con->query('SELECT * FROM isolatie_renovatie WHERE huidig_id = "' . $id . '"');

        }

  
          while($row = mysqli_fetch_object($result))
        {

            $options .= '<option value="' . $row->renovatie_id . '">' . $row->renovatie_status . ' | ' . $row->indexwaarde . '</option>' ;
        }        
        
    }
else {
        $options .= '<option value="0">Selecteer eerst isolatie</option>' . PHP_EOL;
    }

        
   echo $options;        
}



?>



Code is aangeleverd door Adoptive Solution en daar ben ik mee verder gaan proberen.
Je ziet op de test pagina dat de waarde van AJAX wel steeds vernieuwd maar de waarde in de sessie steeds 1 achter loopt.

http://www.eenwebsitemetwordpress.nl/wp-content/themes/breno-child/besparingscalculator/index.php
Gewijzigd op 13/08/2020 13:21:51 door Roy B
 
Ozzie PHP

Ozzie PHP

13/08/2020 16:11:16
Quote Anchor link
Als eerste .. probeer je code beter te structureren. Stukken php-code tussen de html is niet overzichtelijk. Beter is het om de berekeningen in php bovenaan de pagina te maken en om dan in de html-code alleen een php-variabele te echo'en.

Dat gezegd hebbende ... het stukje waar het om gaat is volgens mij dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<td data-label="Besparing">          
  <?php
    if (isset($_SESSION['besparen'])) {
      echo $_SESSION['besparen'];
    }
else {
      echo 'niets';
    }

  ?>

</td>

Op het moment dat je de pagina de allereerste keer inlaadt is de waarde/sessie nog niet gewijzigd en dus wordt de standaardwaarde 'niets' getoond. Als je dan de dropdown wijzigt, zul je tevens de waarde in die <td></td> moeten vervangen door de juiste waarde.
 
Roy B

Roy B

13/08/2020 16:50:09
Quote Anchor link
Ozzie PHP op 13/08/2020 16:11:16:
Als eerste .. probeer je code beter te structureren. Stukken php-code tussen de html is niet overzichtelijk. Beter is het om de berekeningen in php bovenaan de pagina te maken en om dan in de html-code alleen een php-variabele te echo'en.

Als ik het aan het werk krijg dan ga ik dat zeker aanpassen.

Ozzie PHP op 13/08/2020 16:11:16:
Dat gezegd hebbende ... het stukje waar het om gaat is volgens mij dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<td data-label="Besparing">          
  <?php
    if (isset($_SESSION['besparen'])) {
      echo $_SESSION['besparen'];
    }
else {
      echo 'niets';
    }

  ?>

</td>

Op het moment dat je de pagina de allereerste keer inlaadt is de waarde/sessie nog niet gewijzigd en dus wordt de standaardwaarde 'niets' getoond. Als je dan de dropdown wijzigt, zul je tevens de waarde in die <td></td> moeten vervangen door de juiste waarde.


Het gaat idd om dat stukje, maar het probleem is dat ik het dat niet voor elkaar krijg. Er moet dan iets komen die controleert of de dropdown veranderd.
 
Thomas van den Heuvel

Thomas van den Heuvel

13/08/2020 17:12:24
Quote Anchor link
Ik denk dat je best e.e.a. kunt combineren? Je kunt best een boodschap tonen en tegelijkertijd een nieuwe dropdown weergeven. JSON kan prima een array met al deze informatie-elementen teruggeven.

Ik zou de sessie voornamelijk gebruiken voor initialisatie, bijvoorbeeld voor het moment dat iemand besluit de pagina te verversen tijdens het selectieproces ofzo.

Omdat je gebruik maakt van AJAX-calls is het misschien handig dat je je formulieren ook op dezelfde manier initialiseert zodat je niet twee dingen (het initieel opbouwen van de pagina en het aanpassen van de dropdowns via AJAX-calls) op verschillende manieren probeert te doen, dus voorkom dat je verschillende routines hebt die in wezen hetzelfde doen.

singleSelectChangeValue() doet op dit moment ook niets omdat die variabelen alleen binnen de context van die functie bestaan?

Misschien is het het makkelijkste om dit stap voor stap uit te werken. Schrijf eerst code voor de eerste dropdown, dan voor de tweede. Zorg dat dit alles werkt, en kijk vervolgens terug hoe e.e.a. eventueel efficiënter aangepakt kan worden. Laat misschien in eerste instantie de sessie in het geheel achterwege, dit zorgt enkel voor extra complexiteit. Probeer ook vooral niet alles tegelijkertijd te doen maar compartimenteer dit in stappen, zodat je makkelijker het overzicht kunt bewaren. Ik heb namelijk de indruk dat vooral dit laatste een probleem is, dus maak het jezelf makkelijk door het op te delen in stukken en doe één ding tegelijkertijd :).
 
Roy B

Roy B

13/08/2020 22:09:57
Quote Anchor link
Thomas van den Heuvel op 13/08/2020 17:12:24:
Ik denk dat je best e.e.a. kunt combineren? Je kunt best een boodschap tonen en tegelijkertijd een nieuwe dropdown weergeven. JSON kan prima een array met al deze informatie-elementen teruggeven.


Aangezien ik het niet voor elkaar krijg heb ik even naar jouw suggestie JSON gekeken, wat voorbeelden gevonden en wat getest.

1 voorbeeld heeft 3 dropdowns en die heb ik aangepast en dat werkt. Dit is hoe ik nu het json bestand heb. Is dat op een juiste wijze of kan het ook beter?



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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
[
    {
        "id":"1",
        "name": "geen isolatie",
        "parent_id":"0"
    },
    {
        "id":"2",
        "name": "goede isolatie",
        "parent_id":"0"
    },
    {
        "id":"3",
        "name": "betere isolatie",
        "parent_id":"0"

    },
    {
        "id":"4",
        "name": "beste isolatie",
        "parent_id":"0"

    },
    {
        "id":"5",
        "name": "geen isolatie",
        "parent_id":"1"

    },
    {
        "id":"6",
        "name": "goede isolatie",
        "parent_id":"1"

    },
    {
        "id":"7",
        "name": "betere isolatie",
        "parent_id":"1"

    },
    {
        "id":"8",
        "name": "beste isolatie",
        "parent_id":"1"

    },
{
        "id":"9",
        "name": "geen besparing",
        "parent_id":"5"

    },
    {
        "id":"10",
        "name": " 793,00",
        "parent_id":"6"

    },
    {
        "id":"11",
        "name": " 845,00",
        "parent_id":"7"

    },
    {
        "id":"12",
        "name": " 905,00",
        "parent_id":"8"

    }
]



De waarden met de bedragen staan nu ook in een dropdown. Deze wil ik gewoon als tekst weergegeven. Daarvoor zal onderstaande aangepast moeten worden en moet ik de waarde van de besparing kunnen gebruiken om meerdere bij elkaar op te tellen. Kun je me daar mee op weg helpen?

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
$(document).on('change', '#huidig', function(){
  var huidig_id = $(this).val();
  if(huidig_id != '')
  {
   load_json_data('nieuw', huidig_id);
  }
  else
  {
   $('#nieuw').html('<option value="">Select nieuw</option>');
   $('#besparing').html('<option value="">Select besparing</option>');
  }
 });
 $(document).on('change', '#nieuw', function(){
  var nieuw_id = $(this).val();
  if(nieuw_id != '')
  {
   load_json_data('besparing', nieuw_id);
  }
  else
  {
   $('#besparing').html('<option value="">Select besparing</option>');
  }
 });
});
 
Adoptive Solution

Adoptive Solution

14/08/2020 11:28:55
Quote Anchor link
Zie code 13/08/2020 12:49:45

Wijzig :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<td data-label="Besparing">


in dit :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<td id='besparing' data-label="Besparing">


Stuur in isolatie_calc.php alleen de uitgerekende waarde terug :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
echo $_SESSION['besparen'];


En verwerk de ontvangen waarde :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$("#resultaat").html('Uw besparing per jaar voor dit is : ' + resultaat);
$("#besparing").html(resultaat);
 
Thomas van den Heuvel

Thomas van den Heuvel

14/08/2020 13:30:25
Quote Anchor link
Je hoeft de options niet helemaal uit te schrijven als JSON, ik bedoelde meer zoiets:
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
<?php
$return
= []; // JSON response
$return['message'] = 'Hallo Pietje Puk';

ob_start(); // gebruik output buffering, scheelt je een hoop quotes enzo
    $result = $con->query('...');
    while ($row = $result->fetch_assoc()) {
        // voor de goede orde zouden waarden van $row ook ge-escaped moeten worden met htmlspecialchars()
        // indien deze in een HTML-context gebruikt worden zoals hieronder het geval is

        ?>
<option value="<?php echo $row['some_key']; ?>"><?php echo $row['some_value']; ?></option><?php
    }
$return['options'] = ob_get_clean();

// bouw de response
header('Content-Type: application/json; charset=UTF-8');
echo json_encode($return);
?>

Nu bevat de response twee elementen: message en options.
 
Roy B

Roy B

14/08/2020 15:30:07
Quote Anchor link
Adoptive Solution op 14/08/2020 11:28:55:
Zie code 13/08/2020 12:49:45

Wijzig :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<td data-label="Besparing">


in dit :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<td id='besparing' data-label="Besparing">


Stuur in isolatie_calc.php alleen de uitgerekende waarde terug :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
echo $_SESSION['besparen'];


En verwerk de ontvangen waarde :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$("#resultaat").html('Uw besparing per jaar voor dit is : ' + resultaat);
$("#besparing").html(resultaat);


Dank je voor de uitleg. Ik heb deze toegepast en het werkt zodra er een keus in een dropdown gemaakt wordt. Kom je voor het eerst op de pagina dan krijg je

Uw besparing per jaar voor dit is : [object HTMLParagraphElement]

te zien. Maar verder werkt het :)
 
Adoptive Solution

Adoptive Solution

14/08/2020 16:37:28
Quote Anchor link
Klopt, omdat die 2 regels in de huidige pagina BUITEN de functie staan.

De regels moeten binnen de functie staan.
Zie regel 103 van de code waar ik naar verwees.

Toevoeging op 14/08/2020 17:01:34:

Ik weet niet wat je allemaal uitspookt, maar dit slaat nergens op.

Dit is de DOM, nadat het JavaScript is uitgevoerd.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<td id="besparing" data-label="Besparing"><p id="resultaat">Uw besparing per jaar voor dit is : [object HTMLParagraphElement]</p></td>





Toevoeging op 14/08/2020 17:02:51:

Zojuist weer gekeken, en nu gaat het goed.
 
Roy B

Roy B

15/08/2020 00:50:17
Quote Anchor link
Adoptive Solution op 14/08/2020 16:37:28:
Ik weet niet wat je allemaal uitspookt, maar dit slaat nergens op.

Beetje aan het testen en denk dat je net op het verkeerde moment keek. :)

Nog even een vraagje.
Ik probeer het resultaat van de besparing bij zichzelf op te tellen. Dit omdat er nog meer isolatie soorten zijn met een besparingsresultaat en die wil ik optellen bij elkaar. Dus probeer eerst dit ene resultaat bij zichzelf op te tellen.

Ik heb wat dingen geprobeerd maar krijg dan 793 793 te zien ipv 1586.
Heb nu onderstaand maar krijg geen waarde te zien.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
      var num1 = $("#besparing").val();
      var num2 = $("#besparing").val();
      var uitkomst = parseInt(num1) + parseInt(num2);
      alert(uitkomst);
      $("#uitkomst").val(uitkomst);

in de html
<p id="uitkomst"></p>
Gewijzigd op 15/08/2020 00:50:52 door Roy B
 
Adoptive Solution

Adoptive Solution

15/08/2020 08:58:40
Quote Anchor link
In de broncode van de pagina staat dit

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
var a = $("#resultaat").val();
var b = $("#besparing").val();
var answer = parseInt(num1) + parseInt(num2);
$("#answer").val(answer);


Je zet het resultaat in a en b maar je rekent met num1 en num2.

Er is ook een tabelcel bijgekomen met id="answer".
Bovendien is <p id="resultaat" > verandert in <p id="answer">.

Dus je vraagt iets op wat niet bestaat en je rekent er ook nog eens mee.
Gewijzigd op 15/08/2020 08:59:14 door Adoptive Solution
 
Roy B

Roy B

15/08/2020 10:46:39
Quote Anchor link
Adoptive Solution op 15/08/2020 08:58:40:
In de broncode van de pagina staat dit

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
var a = $("#resultaat").val();
var b = $("#besparing").val();
var answer = parseInt(num1) + parseInt(num2);
$("#answer").val(answer);


Je zet het resultaat in a en b maar je rekent met num1 en num2.

Klopt had ik aangepast maar nog niet in het juiste test mapje geupload. Nu wel.

Adoptive Solution op 15/08/2020 08:58:40:
Er is ook een tabelcel bijgekomen met id="answer".

Ik probeer het net zoals de besparing in een <td> te zetten.

Adoptive Solution op 15/08/2020 08:58:40:
Bovendien is <p id="resultaat" > verandert in <p id="answer">.
Dus je vraagt iets op wat niet bestaat en je rekent er ook nog eens mee.

Ik dacht omdat $("#answer").val(answer); wordt gebruikt ik dus het id van de <p> in answer kan veranderen zodat daar het antwoord komt te staan.

Zoals ik al zei, ik probeer gewoon dingen uit. Had dit op internet gevonden en probeer het aan te passen naar mijn wensen.
 
Thomas van den Heuvel

Thomas van den Heuvel

15/08/2020 11:30:23
Quote Anchor link
Roy Bulten op 15/08/2020 10:46:39:
Klopt had ik aangepast maar nog niet in het juiste test mapje geupload. Nu wel.

Betekent dit dat je geen lokale ontwikkelomgeving hebt waarbij je dingen die je hebt geprogrammeerd direct kunt testen?
 
Roy B

Roy B

15/08/2020 11:34:35
Quote Anchor link
Thomas van den Heuvel op 15/08/2020 11:30:23:
Roy Bulten op 15/08/2020 10:46:39:
Klopt had ik aangepast maar nog niet in het juiste test mapje geupload. Nu wel.

Betekent dit dat je geen lokale ontwikkelomgeving hebt waarbij je dingen die je hebt geprogrammeerd direct kunt testen?


Jawel, maar zet het online zodat jullie kunnen meekijken.

Want je hebt al wel gezien dat ik zonde jullie hulp er niet helemaal uitkom...... :D
Zie vorig bericht van me :(
Gewijzigd op 15/08/2020 11:38:34 door Roy B
 
Thomas van den Heuvel

Thomas van den Heuvel

17/08/2020 00:45:43
Quote Anchor link
Maar val() is voornamelijk bedoeld om formulierwaarden uit te lezen en terug te plaatsen.

Als je de (HTML-)inhoud van een element wilt aanpassen/vervangen dan moet je waarschijnlijk html() gebruiken.
Gewijzigd op 17/08/2020 00:46:00 door Thomas van den Heuvel
 
Roy B

Roy B

17/08/2020 11:29:32
Quote Anchor link
Thomas van den Heuvel op 17/08/2020 00:45:43:
Maar val() is voornamelijk bedoeld om formulierwaarden uit te lezen en terug te plaatsen.

Als je de (HTML-)inhoud van een element wilt aanpassen/vervangen dan moet je waarschijnlijk html() gebruiken.


Je hebt gelijk. Dat heb ik nu ook en het werkt. Ik wil daarbij ook de indexwaarde uitlezen en het lijkt erop of me dat gelukt is met onderstaande code. Vraag me alleen af of het wel helemaal correct is en of dat zo mag. Heb dezelfde code gebruikt als bij isolatie_calc en deze in een nieuw bestand gezet en indexwaarde_calc genoemd. Hier haal ik dan de indexwaarde uit de database afhankelijk van het id.

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
function getCalcValues( data )
{
    $.ajax ({
        type: "POST",
    url: "http://www.eenwebsitemetwordpress.nl/wp-content/themes/breno-child/besparingscalculator/isolatie_calc.php",
    data: data,
        cache: false,
  
            success: function(resultaat)
            {
                $("#besparing").html(resultaat);
              
                var num1 = resultaat;
                var num2 = resultaat;
                  var answer = parseInt(num1) + parseInt(num2);
            $("#answer").html(answer);

            }
        });

    $.ajax ({
        type: "POST",
    url: "http://www.eenwebsitemetwordpress.nl/wp-content/themes/breno-child/besparingscalculator/indexwaarde_calc.php",
    data: data,
        cache: false,
  
           success: function(indexwaarde_isolatie)
           {
          $("#indexw").html(indexwaarde_isolatie);
           }
       });
}
 
Thomas van den Heuvel

Thomas van den Heuvel

17/08/2020 19:51:48
Quote Anchor link
Ik zou het rekenen naar de PHP-kant halen en alles gewoon kant-en-klaar aanleveren.

Realiseer je ook goed het volgende: normaal gesproken ziet een programma er als volgt uit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
A
B
C
D

B wordt pas uitgevoerd nadat A klaar is, C na B en D na C in een normaal, lineair geprogrammeerd programma.

Zo ook bij een AJAX-call, maar niet helemaal. Deze wordt gestart, maar vervolgens loopt het programma verder, dus daarna wordt de tweede AJAX-call gestart, maar mogelijk is de eerste dan dus nog niet klaar. Het is dus absoluut niet gegarandeerd dat AJAX-call #1 is afgerond voordat AJAX-call #2 begint.

Als de ene call informatie nodig heeft uit de andere ben je beter af met het doen van een tweede call in het success-deel van de eerste call indien call #2 informatie nodig heeft uit call #1. Of dus nog veel makkelijker, combineer dit alles en doe gewoon één call naar één PHP-script die alles voor je uitrekent, dat lijkt mij stukken eenvoudiger dan wat je nu aan het doen bent.

Waarschijnlijk ook bedoeld als voorbeeld maar "answer" doet nu gewoon 2x de waarde van "resultaat" en dit kan dus ook aan de serverkant plaatsvinden, ik zou de clientzijde (AJAX, JavaScript etc.) voor weergave gebruiken, en de serverzijde het rekenwerk laten doen in PHP.

Dus ja, de bovenstaande constructie (twee AJAX-calls in serie) is in zekere zin ongewoon en het is dus ook heel erg belangrijk dat je de mogelijke implicaties van zo'n (wat mij betreft ongewenste) constructie begrijpt.

EDIT en dat dit dus ongewenste gevolgen kan hebben als de ene call af en toe sneller klaar is dan de andere.
Gewijzigd op 17/08/2020 19:53:33 door Thomas van den Heuvel
 

Pagina: « vorige 1 2 3 volgende »



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.