Kijk of element bestaat

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Mathieu Posthumus

Mathieu Posthumus

06/10/2015 13:27:00
Quote Anchor link
Heey mensen,

Ik wil m.b.v. jQuery en AJAX kijken of in de response die ik terug met AJAX of er een class gevonden is.

Dit gaat om de class .errors!

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<script>
var errors = $(data).find('.errors')

if (errors)
{
    alert("Errors zijn gevonden");
}
else
{
    alert("Geen errors gevonden");
}
</script>
Gewijzigd op 06/10/2015 13:27:29 door Mathieu Posthumus
 
PHP hulp

PHP hulp

05/11/2024 07:51:21
 
Thomas van den Heuvel

Thomas van den Heuvel

06/10/2015 13:36:01
Quote Anchor link
En je vraag is... hoe controleer je of dit element resultaten oplevert, of liever gezegd niet leeg is?

Google, eerste hit.
Gewijzigd op 06/10/2015 13:36:43 door Thomas van den Heuvel
 
Mathieu Posthumus

Mathieu Posthumus

06/10/2015 13:38:35
Quote Anchor link
Nouja het probleem is dat ik heel veel manieren heb geprobeerd. al die manieren lukken niet.

Als er wel errors zijn dan doet ie het gewoon goed, en als er geen errors zijn dan wilt hij de hele if niet inkomen!
 
- Ariën  -
Beheerder

- Ariën -

06/10/2015 13:50:01
Quote Anchor link
Wat heb je zoal geprobeerd?
 
Mathieu Posthumus

Mathieu Posthumus

06/10/2015 15:11:30
Quote Anchor link
IK heb de functies;

- .find()
- .filter()

gebruikt maar die werkten niet.

De manieren;

- $(".errors").length > 0
- $(".errors") == true

Maar niks werkt! :s
 
Ivo P

Ivo P

06/10/2015 15:19:23
Quote Anchor link
is zou op regel 4 doen

if(errors.length > 0)

Maar ik mis alleen nog wat "ajax" hier precies van invloed is.
Ik kan dat niet in de vraag plaatsen. Of haal je iets op en probeer je de response te doorzoeken ipv de DOM
 
Mathieu Posthumus

Mathieu Posthumus

06/10/2015 15:30:54
Quote Anchor link
Ja dat Ivo

Ik geef via ajax het formulier mee aan de handler en in die handler check ik alles na en geef ik een response weer terug, in die response zitten errors met een class .errors.

Ik moet kunnen checken of .errors bestaat of niet, als ie bestaat geeft ie netjes weer dat er errors zijn en als ie niet bestaat dus als er geen errors zijn dan stopt ie met de code uitvoeren.
 
Ivo P

Ivo P

06/10/2015 15:37:46
Quote Anchor link
Dus je zoekt helemaal niet in de html van de pagina...

ik neem aan dat je in php iets doet met

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$response
.html = 'some html code;
$response.error = '
er is een error';

header('
Content-Type: application/json');
exit(json_encode($response));
?>


en in js:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
$.ajax({
  url: 'iets.php',
  success: function(data) {
    if(data.error) {
      alert('er is een error: ' + data.error);
    }
  },
  error: function(){}

});
 
Mathieu Posthumus

Mathieu Posthumus

06/10/2015 15:42:51
Quote Anchor link
Nee meer dit:

Repsonse handler

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
if (!empty($error))
{

    foreach ($error as $errors)
    {

        echo '<span class="glyphicon glyphicon-warning-sign" style="padding-right:5px; color:red;"></span><a class="errors" style="color:red;">' . $errors . '</a><br>';
    }
}

else
{
   echo 'Alles is goed gegaan!';
}

?>


En de js code

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
("#contact-form").submit(function(event){
    event.preventDefault();

    var form = $(this);
    var url = "contact_form_handler.php?action=check_contact_form";
    var posting = $.post(url, form.serialize());

    posting.done(function(data){
        alert();
        var errors = $(data).find('.errors');
        if (!errors.length > 0)
        {
            alert("errors gevonden");
        }
        else
        {
            alert("Geen errors");
        }
    });
});
Gewijzigd op 06/10/2015 15:44:09 door Mathieu Posthumus
 
Ivo P

Ivo P

06/10/2015 15:50:54
Quote Anchor link
nooit bedacht dat je ook in een string kunt zoeken ipv de DOM.

http://stackoverflow.com/questions/9551230/jquery-selectors-on-a-html-string zegt dat je in elk geval op de goede weg zit.

zelf zou ik ipv alleen de html uit te spugen er een (json) object van maken, en gewoon separaat de melding over error meegeven. Ik blijk namelijk vaak zat dergelijke meta info nodig te hebben.
 
Mathieu Posthumus

Mathieu Posthumus

06/10/2015 15:53:35
Quote Anchor link
Ivo ik heb dat eerder geprobeerd maar dit ging bij mij helemaal fout en me leraar heeft me ermee geholpen maar er is niks van gekomen verder dus daarom doe ik het toch op deze manier.

Maar ik weet zeker dat het zo kan!
 
Ivo P

Ivo P

06/10/2015 16:58:03
Quote Anchor link
kan het nodig zijn dat er om de spans nog een element staat?

var errors = $('<div>' + data + '</div>').find('.errors');
 
Mathieu Posthumus

Mathieu Posthumus

06/10/2015 18:04:49
Quote Anchor link
Ivo P, Top dankjewel het werkt nu helemaal!
 
Snelle Jaap

Snelle Jaap

18/11/2015 11:35:33
Quote Anchor link
Lastig.
 
Thomas van den Heuvel

Thomas van den Heuvel

18/11/2015 12:27:46
Quote Anchor link
Het was waarschijnlijk handiger geweest als je je response anders had vormgegeven.

In plaats van het zoeken in een lap HTML had je een errors-array in JSON-formaat terug kunnen geven. Leeg array = geen errors, niet-leeg array = wel errors. Op die manier kun je veel gestructureerder te werk gaan met je geretourneerde data. De HTML kun je vervolgens eenvoudig genereren in je callback functie met behulp van deze data.

(in het laatste fragment van Mathieu stond op regel 11 een ! die mij niet op zijn plaats lijkt, mogelijk zorgde dit voor verwarring?)
 
Ivo P

Ivo P

18/11/2015 14:01:07
Quote Anchor link
precies wat ik eerder probeerde aan te geven:


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php

$aData
['html'] = 'een lap html';
$aData['errors'][] = 'foutmelding X';
$aData['errors'][] = 'foutmelding Y';

headers('Content-Type: application/json';
echo json_encode($aData);
?>


Dat je ME-leraar (wat is dat voor vak?) er niet uitkomt, is nog geen reden om het maar aan de kant te schuiven.
Je code wordt er namelijk veel eenvoudiger van.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
    posting.done(function(data){
        alert();
        var errors = data.errors;
        if (errors.length > 0)
        {
            alert("errors gevonden");
        }
        else
        {
            alert("Geen errors");
        }
    });
 
Thomas van den Heuvel

Thomas van den Heuvel

18/11/2015 14:13:40
Quote Anchor link
Ivo P op 18/11/2015 14:01:07:
precies wat ik eerder probeerde aan te geven:

Jij verschafte eerder al het hoe (een mogelijke implementatie) en ik geef nu alsnog (wellicht ten overvloede) het waarom :).
 
Inter Kode

Inter Kode

27/11/2015 15:50:03
Quote Anchor link
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 // Jquery

<div class="errors"></div>

<
script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>


<script>
$(document).ready(function() {
  if($('.errors').length > 0) {
   console.log('Bestaat');
  } else {
   console.log('Bestaat niet');
  }
});
</script>

?>
Gewijzigd op 27/11/2015 15:53:02 door Inter Kode
 



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.