Browser hängt bei mehrern Ajax-Requests

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Browser hängt bei mehrern Ajax-Requests

    Ich hab mal wieder ein Problem:

    also ich hab ein Array mit mehreren Werten:

    Quellcode

    1. var check= [];
    2. check[0] = 7;
    3. check[1] = 16;
    4. check[2] = 9;
    5. check[3] = 11;
    6. check[4] = 12;


    Nun möcchte ich für jeden dieser Werte eine PHP-Datei abrufen, nämlich status.php?id={check}

    Quellcode

    1. function getXMLRequestHandle(){
    2. try{
    3. req = new XMLHttpRequest();
    4. }catch (e1){
    5. try{
    6. req = new ActiveXObject("Msxml2.XMLHTTP");
    7. }catch (e2){
    8. try{
    9. req = new ActiveXObject("Microsoft.XMLHTTP");
    10. }catch (failed){
    11. req = "failed";
    12. }
    13. }
    14. }
    15. return req;
    16. }
    17. function getStatus(){
    18. for(var i = 0; i < hosters.length; i++){
    19. req = getXMLRequestHandle();
    20. req.onreadystatechange = resetButtons(req, i);
    21. req.open("get", "/status.php?id=" + check[i]);
    22. req.send(null);
    23. }
    24. }
    25. window.setTimeout("getStatus();", 1000);
    Alles anzeigen


    Das geht zwar alles so halbwegs, wie es soll, dass Problem ist nur, dass der Browser kurzzeitig nicht mehr reagiert, bis alle Requests abgarbeitet worden sind...
  • Das klappt so nicht. Dafür brauchst du eine anständige Warteschalge.
    Zumindest brauchen die Ajax Requests einzelne Variablen.. Einzelne AJAX Requests brauchen ja nach Verbindung schon so 500ms Wartezeit. Wenn du eigene Variablennamen verwendest, könnte es aber funktionieren.

    Quellcode

    1. for(var i = 0; i < hosters.length; i++){
    2. req[i] = getXMLRequestHandle();


    Und dann ist noch ein Fehler im aktuellen Script. Du verwendest req als globale Variable, änderst sie in der Funktion getXMLRequestHandle und danach ersetzt du sie nochmal durch die Funktionsrückgabe durch sich selbst.
  • Hab halt schon merhere Sachen ausprobiert. Habs jetzt mal deinen Vorschlägen gemäß modigiziert. Leider hängt sich der Browser imm noch kurz auf...

    Quellcode

    1. var req = [];
    2. var check = [];
    3. check[0] = 7;
    4. check[1] = 16;
    5. check[2] = 9;
    6. check[3] = 11;
    7. check[4] = 12;
    8. function getXMLRequestHandle(){
    9. var handle;
    10. try{
    11. handle = new XMLHttpRequest();
    12. }catch (e1){
    13. try{
    14. handle = new ActiveXObject("Msxml2.XMLHTTP");
    15. }catch (e2){
    16. try{
    17. handle = new ActiveXObject("Microsoft.XMLHTTP");
    18. }catch (failed){
    19. handle = "failed";
    20. }
    21. }
    22. }
    23. return handle;
    24. }
    25. function getStatus(){
    26. getXMLRequestHandle();
    27. for(var i = 0; i < check.length; i++){
    28. if(document.getElementById("button_" + check[i]) !== null){
    29. req[i] = getXMLRequestHandle();
    30. req[i].onreadystatechange = resetButtons(req[i], i);
    31. req[i].open("get", "/get_link_status.php?id=" + check[i]);
    32. req[i].send(null);
    33. }
    34. }
    35. }
    36. window.setTimeout("getStatus();", 1000);
    Alles anzeigen