js-problem

  • hallo!

    ich hätte ein spezielle frage bezüglich des XMLHttpRequest-objekts; hab in einem anderen forum schon gefragt aber nicht die gewünschte antwort bekommen ... also ich hab eine js-funktion die heißt "Request":

    Quellcode

    1. var http_request = false;
    2. function Request(file, mode, number) {
    3. http_request = false;
    4. try
    5. {
    6. http_request = new XMLHttpRequest();
    7. }
    8. catch(e)
    9. {
    10. try
    11. {
    12. http_request = new ActiveXObject("Msxml2.XMLHTTP");
    13. }
    14. catch (e)
    15. {
    16. try
    17. {
    18. http_request = new ActiveXObject("Microsoft.XMLHTTP");
    19. }
    20. catch (e)
    21. {
    22. }
    23. }
    24. }
    25. if (!http_request) {
    26. alert("Can't create a http_request-Object!")
    27. return false;
    28. }
    29. switch(mode)
    30. {
    31. case "read":
    32. http_request.open('POST', "work.php", true);
    33. http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    34. http_request.onreadystatechange = change_first;
    35. http_request.send("file=" file "&mode=" mode "&number=" number);
    36. break;
    37. case "split":
    38. http_request.open('POST', "work.php", true);
    39. http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    40. http_request.onreadystatechange = change_second;
    41. http_request.send("file=" file "&mode=" mode "&number=" number);
    42. break;
    43. case "upload":
    44. http_request.open('POST', "work.php", true);
    45. http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    46. http_request.onreadystatechange = change_third;
    47. http_request.send("file=" file "&mode=" mode "&number=" number);
    48. break;
    49. default:
    50. break;
    51. }
    52. }
    Alles anzeigen


    so ok nun hab ich zwei buttons die die gleiche funktion aufrufen nur andere parameter der funktion übergeben wenn diese gedrückt werden diese funkton schaut so aus:

    Quellcode

    1. function upload(mode, file, part, number_of_parts)
    2. {
    3. document.getElementById('button_all').disabled = true;
    4. document.getElementById('button_' part).disabled = true;
    5. Request(file, "upload", part);
    6. }


    wie man sieht wird am schluss die funktion "Request" aufgerufen! dieser request benötigt eine gewisse zeit weil das php-script viel arbeit zu erledigen hat!
    HIER MEIN PROBLEM: wenn ich jetzt beide buttons schnell hintereinander drücke so treten nur die ereignisse vom zweiten button auf; also das php-script arbeitet nur mit parametern des zweiten buttons; der prozess vom ersten wird irgendwie unterbrochen ....

    meine vermutungen:
    -> die variable http_request wird beim zweiten aufruf der funktion "Request" einfach wieder neu überschrieben
    -> es kann nicht gleichzeitgi von zwei "prozessen" auf ein php-script zugefriffen werden

    vielleicht weiß irgenwer von euch eine lösung :roll:
    thx

    greetz
    dave
  • nein, den zweiten button deaktiviere ich nicht! der button "button_all" ist nur ein dritter button der nur deaktiviert wird wenn mindestens einer von den beiden buttons gedrückt wird ... aber das ist nebensächlich ...
    der firefox wirft keine fehler meldungen aus .. leider ..

    das hauptproblem liegt darin, ein beispiel:

    Quellcode

    1. for(i=0;i<3;i++)
    2. {
    3. Request(file, "upload", i);
    4. }


    das geht auch nciht bzw. nur beschränkt da jeder aufruf die variable http_request wieder überschreibt und somit die unfertigen dinge einfach nicht abgearbeitet werden ... die beste lösung in meinen augen ist die mit einem array von http_request's oder?

    dave