Ajax + Schleife

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Ajax + Schleife

    Ich möchte mehrere Daten an eine Datei übergeben mit Ajax.. Alles aber nacheinander und diese sollen dann dort ausgewertet werden und mir wieder nen return zurückgeben.

    Das ganze funktionniert mit einer Übergabe wunderbar... Wenn ich das ganze dann so einbaue funktioniert es nicht mehr

    PHP-Code:

    for (var 0temp_array.lengthi++) {
    anfrage.open("POST"urltrue);
    anfrage.onreadystatechange testfunction;
    anfrage.setRequestHeader("Conent-Type","application/x-www-form-urlencoded");
    anfrage.send("test=" escape('vla'));

    Es kommt zu folgendem Fehler



    Fehler: [Exception... "Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIXMLHttpRequest.status]" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)" location: "JS frame :: xxx.php :: testfunction :: line 392" data: no]
    Quelldatei: xxx.php
    Zeile: 392

    Fehler: uncaught exception: [Exception... "Component returned failure code: 0x804b000f [nsIXMLHttpRequest.setRequestHeader]" nsresult: "0x804b000f (<unknown>)" location: "JS frame :: xxx :: add_bonus :: line 379" data: no]
    So wenn ich das ganze aber mit nem altert versehe in der for schleife, dann funktioniert es wieder und ich erhalte auch nen erfolgreichen return aus der php datei über responseText

    PHP-Code:

    for (var 0temp_array.lengthi++) {
    alert('test');
    anfrage.open("POST"urltrue);
    anfrage.onreadystatechange testfunction;
    anfrage.setRequestHeader("Conent-Type","application/x-www-form-urlencoded");
    anfrage.send("test=" escape('vla'));


  • #2
    Hast du hier mal geschaut ?

    Gruss

    tobi
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      hab mir die site mal durchgelesen aber die hilft mir nich wirklich weiter.. hab die ganzen sachen auch so... status abfragen und readyState...

      das komische ist ja, dass es funktionniert wenn ich einen altert in die for schleife packe...

      das gleiche ist ja wenn ich 2 hintereinander verschicke

      geht

      PHP-Code:

      anfrage
      .open("POST"urltrue);
      anfrage.onreadystatechange testfunction;
      anfrage.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
      anfrage.send("test=" escape('vla'));
          
      alert('test');

      anfrage.open("POST"urltrue);
      anfrage.onreadystatechange testfunction;
      anfrage.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
      anfrage.send("test=" escape('vla')); 
      geht nicht

      PHP-Code:

      anfrage
      .open("POST"urltrue);
      anfrage.onreadystatechange testfunction;
      anfrage.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
      anfrage.send("test=" escape('vla'));

      anfrage.open("POST"urltrue);
      anfrage.onreadystatechange testfunction;
      anfrage.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
      anfrage.send("test=" escape('vla')); 
      Update:
      Es liegt einfach darin das ich nur einen request habe und sich diese in die Quere kommen! Trotzdem danke für die hilfe
      Zuletzt geändert von Sebastian.J; 19.01.2007, 16:53.

      Kommentar


      • #4
        So und weil ich nett bin gibts für die Leute die irgendwann auch mal das Problem haben die Lösung (vlt nicht die beste aber immerhin eine)

        PHP-Code:

        //Erzeuge ein Array mit sovielen Anfragen wie nötig
        var anfrage = new Array();

        anfrage[0] = request();
        anfrage[1] = request(); 

        PHP-Code:

        anfrage
        [0].open("POST"urltrue);
        anfrage[0].onreadystatechange = function(){
            
          if(
        anfrage[0].readyState == 4) {
            
            if(
        anfrage[0].status == 200) {
            var 
        testing anfrage[0].responseText;
            
        alert(testing);
            }
              else {
              
        alert("Fehler! Anfragestatus ist " anfrage[0].status);
              }
                    
          }
                
        };

        anfrage[0].setRequestHeader("Content-Type","application/x-www-form-urlencoded");
        anfrage[0].send("test=" escape('hallo request')); 

        Mit

        http_request.onreadystatechange = function(){
        // mach etwas
        };

        ist es halt möglich direkt eine Funktion zu erstellen. Das bedeutet das ganze kann auch in der for Schleife passieren, weil mit

        http_request.onreadystatechange = nameDerFunktion;

        lassen sich keine parameter mitgeben.

        Gruss Sebastian

        Kommentar


        • #5
          Ein problem was ich jetzt allerdings noch habe ist, dass ich keine Zählgesteuerte Schleife damit füllen kann...

          Also

          PHP-Code:

          anfrage
          [0] = request();
          anfrage[1] = request();

          for (var 
          02i++) {
              
          anfrage[i].open("POST"urltrue);
              
            
          anfrage[i].onreadystatechange = function(){
                      
              if(
          anfrage[i].readyState == 4) {
                      
                if(
          anfrage[i].status == 200) {
                var 
          testing anfrage[i].responseText;
                
          alert(testing);
                }
                  else {
              
          alert("Fehler! Anfragestatus ist " anfrage[i].status);
              }
                          
            }
                      
          };
              
          anfrage[i].setRequestHeader("Content-Type","application/x-www-form-urlencoded");
          anfrage[i].send("test=" escape('vla5000'));
              

          als ausgabe von anfrage[0] erhalte ich allerdings [Object XMLHttp Request]..

          JS Fehler ist
          Fehler: anfrage[i] has no properties

          Kommentar


          • #6
            ähm?
            Code:
            anfrage = new Array();
            Fehlt das nicht bei dir?
            Sunshine CMS
            BannerAdManagement
            Borlabs - because we make IT easier
            Formulargenerator [color=red]Neu![/color]
            Herkunftsstatistik [color=red]Neu![/color]

            Kommentar


            • #7
              Original geschrieben von Benny-one
              ähm?
              Code:
              anfrage = new Array();
              Fehlt das nicht bei dir?
              ne hab die in meinem code drin nur vergessen zu posten...

              die Fehlermeldung beim nicht deklaration wäre ja sonst
              Fehler: anfrage is not defined


              Nachtrag:
              Ich hab mich dazu entschlossen das ganze ohne Ajax zu lösen und anders vorzugehen, weil hier eine Ajax Applikation nicht unbedingt nötig ist. Außerdem würde es die Rechnung unnötig aufblähen wenn ich da weiter fusche!


              Das ganze kann in einer for schleife nicht funktionieren weil er schon in den nächsten durchlauf geht, wenn er mit dem einen request noch nicht fertig ist. Also Asynchron halt
              Zuletzt geändert von Sebastian.J; 20.01.2007, 15:18.

              Kommentar

              Lädt...
              X