[JS] jQuery Ajax.abort(); Error: "Failed to load resource".

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een Ajax request opgebouwd, deze word herhaaldelijk uitgevoerd en wil nog wel eens zichzelf (door luser input) opnieuw uitvoeren voordat de vorige request zich heeft voldaan.

Nu heb ik er voor kunnen zorgen dat ik de vorige Ajax call abort en dan pas de nieuwe plaats, geen probleem en werkt nu als een zonnetje. Maar, er zit toch nog een glitch in, de browser geeft een dikke error "Failed to load resource" (Chrome). Op zich logisch, er word tenslotte toch een request afgekapt voordat hij resultaat ontvangt. Nu heb ik al geprobeerd om deze in een try / catch blok te zetten, maar dit vangt de error niet af.

JavaScript:
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
30
31
32
33
34
// Code aan het begin van het event 
function onFooEvent () {
  if (ajaxCall != null) {
    if (ajaxActive == true) {
      ajaxCall.abort(); // de abort, die prima werkt, maar een dikke error geeft... Ook in een Try/catch.
    } 
  }
  ajaxActive = false;
  

  // ..................
  // verderop in het event 
  ajaxActive = true;
  ajaxCall = $.ajax({
    type: 'POST',
    dataType: 'json',
    url: path,
    success: ajax_succes,
    error: ajax_error
  });
}

// Callbacks
function ajax_succes(data) {
  ajaxActive = false;
  
  // .....  verdere afhandeling
}

function ajax_error(data) {
  ajaxActive = false;
  
  // .....  verdere afhandeling
}


Ik heb een vermoeden dat deze error niet echt af te vangen is, het lijkt er op dat het op browser niveau gebeurd. Maar toch vind ik het dan vreemd dat deze functie gebruikt kan worden? Enige ideeën?

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-09 08:45
Hoe wordt het event aangeroepen? En wat is je code hiervoor?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bosmonster schreef op woensdag 09 februari 2011 @ 13:53:
Hoe wordt het event aangeroepen? En wat is je code hiervoor?
Het is een lap met code van een contributer voor Drupal wat ik aan het "tweaken" ben. Het is een klein beetje een zootje, die wil ik jullie voor nu nog even besparen.

Het gaat om een AJAX search field, deze heeft wat "slordigheden", waaronder dat de Ajax calls worden uitgevoerd op keyUp events, zonder check of de vorige ajax call is afgehandeld. Daardoor komen er af en toe resultaten voorbij van de laatste 5 queries, zoals: "d", "da", "dam", "damn", "damn!". ;) Nu heb ik eigenlijk geen tijd en zin om timers er omheen te zetten en wil ik het afvangen met de bovenstaande code. Wat ook prima gaat, alleen de Ajax abort geeft dus die foutmeldingen, waar ik niet echt blij van word..

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-09 08:45
Hmm als het gaat om een autocomplete kun je sowieso beter een timer hanteren. Dan is het aborten van requests een beetje zonde.

Gewoon een setTimeout en deze cancellen en opnieuw zetten. Dan voorkom je ook dat je als je snel typt continu ajax-calls aan het doen bent en aan het cancellen (en hopen dat je op tijd bent). En is, zoals je zelf al gemerkt hebt, een stuk minder foutgevoelig :P

[ Voor 9% gewijzigd door Bosmonster op 09-02-2011 14:09 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb er nu een setInterval van gemaakt, werkt op zich ook naar behoren inderdaad. Maar toch vraag ik me nog steeds af waarom abort zo'n error naar voren brengt en of die af te vangen is...

Maar, bedankt Bosmonster. ;)