Raar Ajax post data gedrag

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Xaboteur X

Xaboteur X

11/06/2012 14:57:19
Quote Anchor link
Hallo,

Ik haal met een ajax post request volgende data op (rijen uit database):

<tr>
<td>100.00</td>
</tr>
<tr>
<td>100.45</td>
</tr>
<div id="totaal">200.45</div>

Met Firebug heb ik gecontroleerd dat het antwoord op de request steeds de juiste output (data) geeft.
Alles goed dus.

Nu het gekke:
Als mijn data rijen bevat, en het totaal bv 200.45 is, en ik dan een alert doe in mijn success van Ajax, dan geeft die null weer.
Als mijn data GEEN rijen bevat, en het totaal 0.00 is, dan geeft de alert wel correct 0.00 weer.

Maar met Firebug zie ik dat mijn respons (data) telkens correct is...
<div id="totaal">200.45</div> (met voorgaande rijen)
<div id="totaal">0.00</div> (zonder voorgaande rijen)


Als ik rijen heb, en een alert doe, zou die dan toch gewoon 200.45 moeten weergeven?
 
PHP hulp

PHP hulp

22/12/2024 19:07:12
 
Ozzie PHP

Ozzie PHP

11/06/2012 15:27:35
Quote Anchor link
Misschien even wat code posten?
 
Xaboteur X

Xaboteur X

11/06/2012 15:46:42
Quote Anchor link
Excuses.

Ben ook vergeten te melden, dat als ik één keer de output zonder rijen heb gehad, ik vervolgens overal 0.00 als totaal in ajax success heb. Met rijen of zonder rijen.

Toevoeging op 11/06/2012 21:42:51:

$('div#totaal-facturen').html(); in de success van ajax, zou mij toch gewoon de inhoud van dat element moeten geven?!

De opgehaalde rijen kan ik gewoon hover functies toewijzen in de success... Waarom kan ik dan niet de inhoud van één element krijgen??

Toevoeging op 11/06/2012 21:58:01:

Ik kan alles aanpassen van de Ajax data, buiten mijn div#totaal-facturen.
Die heb ik na mijn while-loop, in factuur-data.php, gewoon aan mijn $output_array toegevoegd.
Omdat ik dit totaal niet binnen die while-loop kan berekenen.

Maar het zit toch in dezelfde array die wordt opgehaald met Ajax?!

Iemand die een andere manier weet?


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
facturen = function() {

    var dataString = "jaar="+jaar+"&kwartaal="+kwartaal;
    
    function facturenOverzicht() {
        $.ajax({
            type: "POST",
            url: "factuur-data.php?",
            cache: false,
            data: dataString,
            success: function(data) {
                $('table#table-facturen tr.factuur-row').remove();
                $('table#table-facturen tr.table-heading').after(data);
                var aantal = $('table#table-facturen tr.factuur-row').length;
                $('p.info-facturen').html("Aantal facturen: "+aantal);
                
                
                // Hier zit het probleem
                var totaalFacturen = $('div#totaal-facturen').html();
                alert(totaalFacturen);
                $('p.info-totaal-facturen').html(totaalFacturen);
                
            }
        });
    }
    
    facturenOverzicht();
    
    // Sorteren op geselecteerd jaar
    $('select#select-jaar').change(function() {
        jaar = $('select#select-jaar option:selected').val();
        kwartaal = $('select#select-kwartaal option:selected').val();
        dataString = "jaar="+jaar+"&kwartaal="+kwartaal;
        facturenOverzicht();
    });
    // Sorteren op geselecteerd kwartaal
    $('select#select-kwartaal').change(function() {
        jaar = $('select#select-jaar option:selected').val();
        kwartaal = $('select#select-kwartaal option:selected').val();
        dataString = "jaar="+jaar+"&kwartaal="+kwartaal;
        facturenOverzicht();
    });
}


factuur-data.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
117
118
119
120
121
122
123
124
125
126
<?php
    
    // Sorteren
    $jaar = $_POST['jaar'];
    if(is_numeric($jaar)) {
        $min_range = $jaar . '001';
        $min_range = (int)$min_range;
        $max_range = $jaar . '999';
        $max_range = (int)$max_range;
        
        if(isset($_POST['kwartaal'])) {
            $kwartaal = $_POST['kwartaal'];
            
            if(is_numeric($kwartaal)) {
                if($kwartaal == 1) {
                    $kwartaal_begin = $jaar.'-01-01';
                    $kwartaal_einde = date('Y-m-d', strtotime('-1 day', strtotime($jaar.'0401')));
                }

                if($kwartaal == 2) {
                    $kwartaal_begin = $jaar.'-04-01';
                    $kwartaal_einde = date('Y-m-d', strtotime('-1 day', strtotime($jaar.'0701')));
                }

                if($kwartaal == 3) {
                    $kwartaal_begin = $jaar.'-07-01';
                    $kwartaal_einde = date('Y-m-d', strtotime('-1 day', strtotime($jaar.'1001')));
                }

                if($kwartaal == 4) {
                    $kwartaal_begin = $jaar.'-10-01';
                    $kwartaal_einde = date('Y-m-d', strtotime('-1 day', strtotime(($jaar+1).'0101')));
                }

                $get_facturen = mysql_query("
                SELECT
                    f.factuurnr AS factuurnr,
                    f.factuur AS factuur,
                    f.klant AS klant,
                    f.datum AS datum,
                    SUM(ROUND(fp.totaal+(fp.totaal*fp.btw/100), 2)) AS totaal
                FROM facturen AS f
                LEFT JOIN factuur_product AS fp
                ON f.factuurnr = fp.factuurnr
                WHERE f.zichtbaar = 1
                AND f.factuurnr BETWEEN '$min_range' AND '$max_range'
                AND f.datum BETWEEN '$kwartaal_begin' AND '$kwartaal_einde'
                GROUP BY f.factuurnr, fp.factuurnr, f.factuur
                ORDER BY f.factuurnr DESC"
) or die ("Query mislukt: " . mysql_error());
            }

            else {
                $get_facturen = mysql_query("
                SELECT
                    f.factuurnr AS factuurnr,
                    f.factuur AS factuur,
                    f.klant AS klant,
                    f.datum AS datum,
                    SUM(ROUND(fp.totaal+(fp.totaal*fp.btw/100), 2)) AS totaal
                FROM facturen AS f
                LEFT JOIN factuur_product AS fp
                ON f.factuurnr = fp.factuurnr
                WHERE f.zichtbaar = 1
                AND f.factuurnr BETWEEN '$min_range' AND '$max_range'
                GROUP BY f.factuurnr, fp.factuurnr, f.factuur
                ORDER BY f.factuurnr DESC"
) or die ("Query mislukt: " . mysql_error());
            }
        }

        else {
            $get_facturen = mysql_query("
            SELECT
                f.factuurnr AS factuurnr,
                f.factuur AS factuur,
                f.klant AS klant,
                f.datum AS datum,
                SUM(ROUND(fp.totaal+(fp.totaal*fp.btw/100), 2)) AS totaal
            FROM facturen AS f
            LEFT JOIN factuur_product AS fp
            ON f.factuurnr = fp.factuurnr
            WHERE f.zichtbaar = 1
            AND f.factuurnr BETWEEN '$min_range' AND '$max_range'
            GROUP BY f.factuurnr, fp.factuurnr, f.factuur
            ORDER BY f.factuurnr DESC"
) or die ("Query mislukt: " . mysql_error());
        }
    }
else {
        $get_facturen = mysql_query("
        SELECT
            f.factuurnr AS factuurnr,
            f.factuur AS factuur,
            f.klant AS klant,
            f.datum AS datum,
            SUM(ROUND(fp.totaal+(fp.totaal*fp.btw/100), 2)) AS totaal
        FROM facturen AS f
        LEFT JOIN factuur_product AS fp
        ON f.factuurnr = fp.factuurnr
        WHERE f.zichtbaar = 1
        GROUP BY f.factuurnr, fp.factuurnr, f.factuur
        ORDER BY f.factuurnr DESC"
) or die ("Query mislukt: " . mysql_error());
    }

    
    // Facturen
    while($facturen = mysql_fetch_array($get_facturen)) {
        $factuurnr = $facturen['factuurnr'];
        $factuur = $facturen['factuur'];
        $klant = $facturen['klant'];
        $datum = date('d/m/Y', strtotime($facturen['datum']));
        
        // Alle totalen in array
        $totaal_facturen[] = $facturen['totaal'];
        
        $totaal = number_format($facturen['totaal'], 2, ',', '.');
        
        $output_array[] = '<tr class="factuur-row">
                <td>'
.$factuurnr.'</td>
                <td>'
.$factuur.'</td>
                <td>'
.$klant.'</td>
                <td>'
.$datum.'</td>
                <td>&euro; '
.$totaal.'</td>
            </tr>'
;
    }

    
    // Alle totalen optellen
    $totaal_facturen = array_sum($totaal_facturen);
    $totaal_facturen = number_format($totaal_facturen, 2, ',', '.');
    
    $output_array[] = '<div id="totaal-facturen" style="display: none;">'.$totaal_facturen.'</div>';
    
    echo implode($output_array);
    
    mysql_close($con);
?>


Toevoeging op 12/06/2012 15:15:07:

Iemand een idee?
Gewijzigd op 11/06/2012 22:02:11 door Xaboteur X
 
Xaboteur X

Xaboteur X

13/06/2012 14:50:47
Quote Anchor link
UPDATE:

Het lag er dus gewoon aan omdat ik mijn <div id="totaal-facturen"> los achter de rijen in mijn tabel zette...
Dan accepteert jQuery dat blijkbaar niet.

Heb er een tr en td omheen geplaatst en nu werkt het perfect!
 



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.