Raar Ajax post data gedrag
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?
Misschien even wat code posten?
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)
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
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();
});
}
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)
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
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>€ '.$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);
?>
// 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>€ '.$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
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!