AJAX: Wert wird nicht ins Formular übertragen

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

  • AJAX: Wert wird nicht ins Formular übertragen

    Hallo AJAX Gurus,

    Kann mir bitte jemand bei folgendem Script helfen und mir sagen warum bei "document.formular.test_wert.value=xmlHttp.respons eText;"
    der Wert NICHT ins Formular geschrieben wird?

    Der Wert aus der mySQL Abfrage ist laut dutchgeführtem Test 100%ig vorhanden.

    Code:
    var xmlHttp;
     
    function get_keyword() 
    {
    xmlHttp=httpXMLobjects();
    if (xmlHttp==null) {
      //alert ("Browser does not support AJAX");
      return;
    }
     
    var aufruf="http://www.[meinedomain].at/ajax/get_keyword.php";
    xmlHttp.onreadystatechange=stateChanged;
    xmlHttp.open("GET",aufruf,true);
    xmlHttp.send(null);
    } 
     
    function stateChanged() 
    { 
        if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") 
        { 
         document.formular.test_wert.value=xmlHttp.responseText;
         } 
    }
     
    function httpXMLobjects() 
    {
    var xmlHttp=null;
    try {
     // Fuer Firefox, Opera und Safari
     xmlHttp=new XMLHttpRequest();
     }
    catch (e) {
     // Der Internet Explorer wills wieder anders
     try {
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
      }
     catch (e) {
      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
     }
    return xmlHttp;
    }
    Vielen Dank für die Hilfe!
    Max

  • #2
    was ergibt denn ein
    PHP-Code:
    alert(xmlHttp.responseText); 
    bei ajax empfehle ich dir übrigens die konsole vom firebug. da kannst du wunderbar alles nachvollziehen.

    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Hi Peter,

      Danke erstmal für Deine Hilfe.

      Bei:
      Code:
      [COLOR=#000000][FONT=Courier New][COLOR=#0000cc]alert[/COLOR][COLOR=#006600]([/COLOR][COLOR=#0000cc]xmlHttp[/COLOR][COLOR=#006600].[/COLOR][COLOR=#0000cc]responseText[/COLOR][COLOR=#006600]); [/COLOR][/FONT][/COLOR]
      wird mir der korrekte Wert ausgegeben.

      document.formular.test_wert.value ist aber definitiv verfügbar.

      Ich hab hier zuvor auch einen Wert zugewiesen und diesen
      via alert(document.formular.test_wert.value); ausgeben können.

      Kommentar


      • #4
        Ich denke dass ich in meinen Funktionsaufrufen einen Fehler habe,
        jedoch weiss ich nicht wo.

        Code:
        <script src="ajax/get_keywords.js" type="text/javascript"></script>
         
        <script language="javascript">
        ...
        var afs_keyword;
        afs_keyword=get_keyword(); //Funktion steht in ajax/get_keywords.js
        ...
        </script>
         
        <form>
        <input type="hidden" name="test_wert" value="">
        </form>
        Wie müsste man "document.formular.test_wert.value=xmlHttp.responseText;" (vorriges Posting) anpassen, damit der Rückgabewert in "afs_keyword" gespeichert wird?
        Also dort von wo die Funktion eigentlich aufgerufen wurde.

        Ich geh mal davon aus, dass hier der Fehler liegt.

        Kommentar


        • #5
          wenn das alert erscheint, dann wird die funktion korrekt ausgeführt. und wenn du den firebug bemüht hättest, dann wäre dir aufgefallen, dass document.formular nicht existiert. warum? ganz einfach. formular bezieht sich auf den formularnamen! also entweder
          PHP-Code:
          document.forms[0].test_wert 
          oder
          PHP-Code:
          <form name="formular"
          daher solltest du dir das hier mal zu gemüte führen.

          peter
          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
          Meine Seite

          Kommentar


          • #6
            Das mit dem form ist klar.
            Ich hab das ja nur als Beispiel angeführt.

            Wo mein Problem weiss ich bereits.

            Ich rufe die AJAX Funktion innerhalb eines anderen Javascripts auf.
            alert bringt mir innerhalb der AJAX Funktion den korrekten Wert.
            Da funktioniert also alles.

            Ein alert innerhalb des ersten Javascripts (von dem aus die AJAX Funktion aufgerufen wurde) zeigt mir wieder einen leeren Wert an, da ich es irgendwie so machen muss, dass das Formular erst dann abgeschickt wird, wenn die Zuweisung über die Ajax Funktion erfolgt ist.

            Der Fehler liegt also daran, dass das erste Javascript schneller ist als jenes welchen den Wert via Ajax zuweist.

            Eine Lösung hierfür hab ich noch keine.

            Kommentar


            • #7
              Ich hab das ja nur als Beispiel angeführt.
              solltest du nicht tun. das führt auf eine falsche fährte.
              Der Fehler liegt also daran, dass das erste Javascript schneller ist als jenes welchen den Wert via Ajax zuweist.
              dann bau doch das abschicken in deine ajax-datei ein:
              PHP-Code:
              function stateChanged() 

                if (
              xmlHttp.readyState==|| xmlHttp.readyState=="complete"
                { 
                  
              document.formular.test_wert.value=xmlHttp.responseText;
                  
              document.formuar.submit();
                } 

              wo ist das problem?

              peter
              Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
              Meine Seite

              Kommentar


              • #8
                Gibts hier die Möglichkeit das ganze kostenpflichtig erledigen zu lassen?

                Kommentar


                • #9
                  ja, hier. nur warum?

                  peter
                  Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                  Meine Seite

                  Kommentar


                  • #10
                    Mein letzer Versuch mit den entscheidenden Scriptteilen und eine genau Beschreibung von dem was ich letztendlich benötigen würde.


                    formular.php
                    Code:
                    <script src="ajax/get_keywords.js" type="text/javascript"></script>
                     
                    <script language="javascript">
                    function kontrolle_left()
                    {
                    ...
                    var afs_keyword;
                    afs_keyword=get_keyword(); //Funktion steht in ajax/get_keywords.js
                     
                    /*
                    Genau hier an dieser Stelle bräuchte ich den Wert von xmlHttp.responseText
                    Erst wenn dieser durch die Ajax Funktion ermittelt wurde soll genau hier 
                    im Script weitergemacht werden.
                    */
                    ...
                     
                       if(ok==true)
                       {
                       return true;   
                       }
                       else
                       {
                       alert(meldung+"\nBitte um Korrektur der Angaben.");
                       return false;
                       }
                    }
                    </script>
                     
                    <form method="get" action="suche.php" name="formular" onsubmit="return kontrolle_left()">
                    <input type="hidden" name="test_wert" value="">
                    </form>
                    ajax/get_keywords.js
                    Code:
                    var xmlHttp;
                     
                    function get_keyword() 
                    {
                    xmlHttp=httpXMLobjects();
                    if (xmlHttp==null) {
                      //alert ("Browser does not support AJAX");
                      return;
                    }
                     
                    var aufruf="http://www.[meinedomain].at/ajax/get_keyword.php";
                    xmlHttp.onreadystatechange=stateChanged;
                    xmlHttp.open("GET",aufruf,true);
                    xmlHttp.send(null);
                    } 
                     
                    function stateChanged() 
                    { 
                        if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") 
                        { 
                         return xmlHttp.responseText; //funktioniert nicht
                         /*
                         da in formular.php, ok==true und das Formular abgeschickt wird
                         */
                         } 
                    }
                     
                    function httpXMLobjects() 
                    {
                    var xmlHttp=null;
                    try {
                     // Fuer Firefox, Opera und Safari
                     xmlHttp=new XMLHttpRequest();
                     }
                    catch (e) {
                     // Der Internet Explorer wills wieder anders
                     try {
                      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
                      }
                     catch (e) {
                      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
                      }
                     }
                    return xmlHttp;
                    }

                    Kommentar


                    • #11
                      OffTopic:
                      sie haben post

                      peter
                      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                      Meine Seite

                      Kommentar

                      Lädt...
                      X