JQuery: variabele wordt niet meegegeven in ajax call
Code (php)
1
<a href="#" data-href="<?php echo $row["id"]; ?>" class="delbericht"><img src="images/icons/delete.png" width="20px" class="delete" /></a>
Ik heb via het bronbestand van de browser gekeken en ik zie dat de data-href value gevuld is met een id.
Vervolgens wil ik die variabele gebruiken in een ajax call alleen geeft hij steeds aan dat deze leeg is.
Wie weet waarom hij denkt dat deze variabele leeg is?
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
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
$(".delbericht").click(function(e){
e.preventDefault();
href=$(this).data("href");
swal({
title: "Weet je het zeker?",
text: "Dit bericht wordt permanent verwijderd",
type: "warning",
showCancelButton: true,
closeOnConfirm: false,
showLoaderOnConfirm: true,
},
function() {
$.ajax({
type: "POST",
url: "scripts/jquery-posts.php",
data: 'delbericht=' + href,
success: function(msg){
setTimeout(function(){
swal("Bericht succesvol verwijderd");
}, 2000);
},
error: function(msg){
setTimeout(function(){
swal("Error: kan bericht niet verwijderen");
}, 2000);
}
}); // Ajax Call
});
});
e.preventDefault();
href=$(this).data("href");
swal({
title: "Weet je het zeker?",
text: "Dit bericht wordt permanent verwijderd",
type: "warning",
showCancelButton: true,
closeOnConfirm: false,
showLoaderOnConfirm: true,
},
function() {
$.ajax({
type: "POST",
url: "scripts/jquery-posts.php",
data: 'delbericht=' + href,
success: function(msg){
setTimeout(function(){
swal("Bericht succesvol verwijderd");
}, 2000);
},
error: function(msg){
setTimeout(function(){
swal("Error: kan bericht niet verwijderen");
}, 2000);
}
}); // Ajax Call
});
});
Ik heb beide aangepast maar helaas werkt het nog niet.
Krijg ik: undefined
Wanneer ik het laat zoals ik had:
Krijg ik wel de goede id terug.
Maar helaas werkt mijn ajax call nog steeds niet, dus hij bereikt die functie niet lijkt wel.
Hm apart, maar hij pakt je id dus wel, dan is de vraag wat je bedoelt met 'leeg'? Wat doet er niet?
en kijken of deze gevuld is..
Daarnaast kun je anders kijken of je href wel gevuld is met:
daarnaast wat zit er in je href, wellicht dat je deze moet escapen bijvoorbeeld als er een = inzit...
Gewijzigd op 01/09/2015 15:32:27 door Remco van der Velde
De href is wel gevuld zowel met alert als met console.log.
In mijn data-href zit een id en dat is in dit geval een enkel cijfer: 6, 5 of 4.
Alleen ik roep deze variabele weer aan in de ajax call onderaan maar daar blijkt die leeg te zijn.
Gewijzigd op 01/09/2015 15:44:31 door Danny von Gaal
Verplaats dan href=$(this).data("href"); naar je volgende functie. Probleem opgelost.
helpt het eventueel als je "var" zet voor href=....
Toevoeging op 01/09/2015 15:51:11:
@DavY
verwijst "this" dan niet naar iets anders dan naar het geklikte element?
Dat is ook zo. De oplossing zit hem dan al in mijn eerste reactie.
Via de Ajax call roep ik een .php bestand en die geeft een return false; maar dan wordt de error functie van de Ajax call helemaal niet aangeroepen.
Daardoor leek het alsof de variabele steeds leeg was maar
Code (php)
1
2
3
4
5
2
3
4
5
error: function(msg2){
setTimeout(function(){
swal("Error: kan bericht niet verwijderen");
}, 2000);
}
setTimeout(function(){
swal("Error: kan bericht niet verwijderen");
}, 2000);
}
wordt gewoon niet aangeroepen.
Ik heb voor nu even in jquery-posts.php alleen dit opgenomen
Maar dan staat er gewoon bericht succesvol verwijderd ipv error: kan bericht niet verwijderen. Pas wanneer er een incompleet commando staat wordt de error aangegeven.
Is de error in mijn ajax call dan niet op de goede manier gebruikt?
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
success: function(msg){
if(msg == 1) {
$('#error').html('Er is iets fout gegaan!');
} else {
setTimeout(function(){
swal("Bericht succesvol verwijderd");
}, 2000);
}
},
if(msg == 1) {
$('#error').html('Er is iets fout gegaan!');
} else {
setTimeout(function(){
swal("Bericht succesvol verwijderd");
}, 2000);
}
},
Error geeft alleen paginafouten aan. Zie: http://stackoverflow.com/a/9446122
Gewijzigd op 01/09/2015 16:36:33 door DavY -
Ik heb het nu vervangen voor deze if {} else {}. Alleen in je voorbeeld van het php bestand is alleen de echo toch voldoende? Dat maakt de return false; toch overbodig?
Ja. In dit geval wel.