Nieuws:

We zijn er weer.

Na lange tijd van afwezigheid zijn we er weer  :laugh:
We hebben alle wachtwoorden gereset, je oude wachtwoord werkt niet meer.Je moet via het "wachtwoord vergeten"-linkje je wachtwoord resetten. Je krijgt hiervoor een mailtje op het adres dat je bij ons geregistreerd hebt.

De komende tijd zijn we nog druk bezig om de rest van de site op te bouwen, dus het kan zijn dat sommige onderdelen (tijdelijk) niet werken.

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: ajax call wachten tot call klaar is  (gelezen 511 keer)

Offline MKe

  • Lid
  • Steunpunt: Nee
ajax call wachten tot call klaar is
« Gepost op: 2013/09/11, 11:41:20 »
Hoi,

Ik probeer een wacht-pagina te maken die ajax gebruikt om te kijken of het proces klaar is. Dus hij vraagt een url op en als die gegevens doorgeeft (json) dan moet hij iets doen.
Laat ik even voorop stellen dat ik een beginneling ben met javascript en zeker met AJAX en ik dus nog maar net kan begrijpen wat ik hieronder heb gedaan.

<script type="text/javascript"
 src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js">
</script>
<script type="text/javascript">

function check() {
    $.get("/datacheck", function(data) {
    if (data.value=="T") {
        guess_result="Data right";
    } else {
        guess_result="Data wrong ";
    }
    $('#result')[0].innerHTML=guess_result;
    });
};
window.onload = check ;

</script>

Het script verandert dus de inhoud van een div als hij een waarde terug krijgt. Als de aanvraag snel gaat werkt dit uitstekend. Maar duurt het echter langer, dan doet hij niets. Ik denk dat het script op een of andere manier niet wacht tot er data uit komt.

Ik snap niet hoe ik dit kan oplossen. Kan iemand het uitleggen?

Offline commandoline

  • LoCo-contact
    • marten-de-vries
    • Marten-de-Vries.nl
  • Steunpunt: Nee
Re: ajax call wachten tot call klaar is
« Reactie #1 Gepost op: 2013/09/11, 19:42:09 »
Er is maar één reden waarom de success-callback (de functie die je als tweede parameter aan $.get meegeeft) niet aangeroepen zou worden, en dat is dat er een fout (misschien een timeout, aangezien je het hebt over langere tijd) optreedt. Om een fout op te vangen kan je een fail callback gebruiken. Bijv:
$.get( "/datacheck",function (data) {
  ...;
}).fail(function (xhr, status, err) {
  console.log([xhr, status, err]);
});
In je browser console komt dan informatie te staan over de fout die optreedt. Meer info over de jQuery .get functie hier: http://api.jquery.com/jQuery.get/

Aangezien je toch jQuery (of anders Zepto) lijkt te gebruiken, kan je dit trouwens nog wat versimpelen:
$('#result')[0].innerHTML=guess_result;
//naar
$('#result').text(guess_result);

En
window.onload = check ;
//kan vervangen worden door het snellere
$(document).ready(check);
//wat weer als shortcut het volgende heeft (omdat het erg veel gebruikt wordt):
$(check);

Offline MKe

  • Lid
  • Steunpunt: Nee
Re: ajax call wachten tot call klaar is
« Reactie #2 Gepost op: 2013/09/13, 20:03:57 »
Bedankt, dit heeft me geholpen en het werkt nu. Weet niet precies wat er fout ging.