Nieuws:

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

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

Offline MKe

  • Lid
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
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
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.