JQuery: variabele wordt niet meegegeven in ajax call

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Danny von Gaal

Danny von Gaal

01/09/2015 14:49:12
Quote Anchor link
Ik heb een link die er zo uit ziet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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)
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
$(".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
            });
        });
 
PHP hulp

PHP hulp

02/12/2020 18:09:07
 
DavY -

DavY -

01/09/2015 15:06:19
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
var target = $('a');
var href = target.data("href");


Corrigeer dit even:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$(".delbericht").click(function(e){

Naar:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$(".delbericht").on('click', function(e){
Gewijzigd op 01/09/2015 15:08:23 door DavY -
 
Danny von Gaal

Danny von Gaal

01/09/2015 15:08:27
Quote Anchor link
Ik heb beide aangepast maar helaas werkt het nog niet.
 
DavY -

DavY -

01/09/2015 15:09:12
Quote Anchor link
Het werkt hier prima. Controleer maar eens door te debuggen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
alert(href);
Gewijzigd op 01/09/2015 15:09:33 door DavY -
 
Danny von Gaal

Danny von Gaal

01/09/2015 15:13:08
Quote Anchor link
Wanneer ik dit toepas wat jij zei:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
var target = $('a');
var href = target.data("href");
alert(href);

Krijg ik: undefined

Wanneer ik het laat zoals ik had:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
href=$(this).data("href");
alert(href);


Krijg ik wel de goede id terug.

Maar helaas werkt mijn ajax call nog steeds niet, dus hij bereikt die functie niet lijkt wel.
 
DavY -

DavY -

01/09/2015 15:16:12
Quote Anchor link
Hm apart, maar hij pakt je id dus wel, dan is de vraag wat je bedoelt met 'leeg'? Wat doet er niet?
 
Remco van der Velde

Remco van der Velde

01/09/2015 15:29:19
Quote Anchor link
probeer eens console.log(href) onder href en boven swal({

en kijken of deze gevuld is..

Daarnaast kun je anders kijken of je href wel gevuld is met:


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
href=$(this).attr("data-href");


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
 
Danny von Gaal

Danny von Gaal

01/09/2015 15:43:53
Quote Anchor link
Remco,

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
 
DavY -

DavY -

01/09/2015 15:49:38
Quote Anchor link
Verplaats dan href=$(this).data("href"); naar je volgende functie. Probleem opgelost.
 
Ivo P

Ivo P

01/09/2015 15:50:11
Quote Anchor link
zit jouw ajax call in een function die weer in de functie-aanroep swa1 zit?

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?
 
DavY -

DavY -

01/09/2015 15:54:04
Quote Anchor link
@Ivo,

Dat is ook zo. De oplossing zit hem dan al in mijn eerste reactie.
 
Danny von Gaal

Danny von Gaal

01/09/2015 16:19:03
Quote Anchor link
Okee mijn excuus maar ik denk dat het probleem niet in de variabele zit. xD

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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
error: function(msg2){        
                        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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if (isset($_POST['delbericht'])) {
    return false;
}

?>


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?
 
DavY -

DavY -

01/09/2015 16:24:04
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if (isset($_POST['delbericht'])) {
    echo 1;
}

?>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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);
                      }
                    },


Error geeft alleen paginafouten aan. Zie: http://stackoverflow.com/a/9446122
Gewijzigd op 01/09/2015 16:36:33 door DavY -
 
Danny von Gaal

Danny von Gaal

01/09/2015 16:30:12
Quote Anchor link
Bedankt, ik gebruikte de error dus verkeerd in de ajax call.

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?
 
DavY -

DavY -

01/09/2015 16:36:10
Quote Anchor link
@Donny

Ja. In dit geval wel.
 



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.