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!


<script>
var errors = $(data).find('.errors')

if (errors)
{
    alert("Errors zijn gevonden");
}
else
{
    alert("Geen errors gevonden");
}
</script>
En je vraag is... hoe controleer je of dit element resultaten oplevert, of liever gezegd niet leeg is?

Google, eerste hit.
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!
Wat heb je zoal geprobeerd?
IK heb de functies;

- .find()
- .filter()

gebruikt maar die werkten niet.

De manieren;

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

Maar niks werkt! :s
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
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.
Dus je zoekt helemaal niet in de html van de pagina...

ik neem aan dat je in php iets doet met

<?php
$response.html = 'some html code;
$response.error = 'er is een error';

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

en in js:


$.ajax({
  url: 'iets.php',
  success: function(data) {
    if(data.error) {
      alert('er is een error: ' + data.error);
    }
  },
  error: function(){}

});

Nee meer dit:

Repsonse handler


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


("#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");
        }
    });
});
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.
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!

Reageren