Variable aus javascript an php übergeben

Sempervivum

Erfahrenes Mitglied
Dann ist Debuggen angesagt. Bist Du mit dem Debugger deines Browsers vertraut? Wenn nicht, zunächst Konsolausgaben verwenden. Eine ist ja schon im onreadystatechange-Callback drin (console.log). Außerdem würde ich eine für die Parameter einbauen:
Code:
        var data = "firma=" + SMShop.getFormValue("BILLTO", "BILLTO_COMPANY") + "&nachname=" + SMShop.getFormValue("BILLTO", "BILLTO_LASTNAME");
console.log(data);
 

Sempervivum

Erfahrenes Mitglied
Du kannst z. B. hier nachlesen, wo Du sie findest:
https://wiki.selfhtml.org/wiki/JavaScript/Tutorials/Debuggen_für_Anfänger
Ich habe das JS übrigens bei mir getestet und es hat funktioniert. Mit festen Parametern:
Code:
        var data = "firma=die-firma&nachname=mustermann";
        var xhr = new XMLHttpRequest();
        var url = "testpost.php";
        xhr.open("POST", url, true);
        xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        xhr.onreadystatechange = function () {
            if (xhr.readyState === 4 && xhr.status === 200) {
                console.log(xhr.responseText);
                document.getElementById("ausgabe1").innerHTML = xhr.responseText;
            }
        };
        xhr.send(data);
    </script>
 

Sempervivum

Erfahrenes Mitglied
Und lösche die HTML-Kommentare in deinem Javascript:
Code:
<!--
                //-->
Du schreibst zwar, dass dieser Block funktioniert, aber bei mir erkennt der Interpreter sie als Fehler.
 

Andre Lieske

Grünschnabel
Das habe ich gefunden
Code:
Synchrone XMLHttpRequests am Haupt-Thread sollte nicht mehr verwendet werden, weil es nachteilige Effekte für das Erlebnis der Endbenutzer hat. Für weitere Hilfe siehe http://xhr.spec.whatwg.org/
smjslib.js:1:6866
SyntaxError: missing ) after condition[Weitere Informationen]
bestellung-erfolgreich-gesendet.php:179:41
INIT: 2ms
bestellung-erfolgreich-gesendet.php:254:1
CSI/tbsd_
cb=gapi.loaded_0:256:127
CSI/_tbnd
 

Sempervivum

Erfahrenes Mitglied
In Javascript darfst Du keine HTML-Kodierungen verwenden. Ersetze sie durch das einfache Zeichen:
Code:
if (xhr.readyState === 4 && xhr.status === 200) {
if (xhr.readyState === 4 &amp;&amp; xhr.status === 200) {
Oder hat das die Forensoftware gemacht, Du hast ja keine Code-Tags verwendet? Oder dein Editor?
 

Sempervivum

Erfahrenes Mitglied
PS: Offenbar die Forensoftware. Du musst Codetags verwenden, wenn Du Code postest. Diese Zeile allein ist OK. Poste noch Mal das vollständige JS, der Fehler muss irgend wo anders liegen.
 

Andre Lieske

Grünschnabel
Code:
<script type="text/javascript">
           

            var sBestelldaten = ''
              + 'Firma: ' + SMShop.getFormValue("BILLTO", "BILLTO_COMPANY") + '<br>'
                + 'Email: ' + SMShop.getFormValue("BILLTO", "BILLTO_EMAIL") + '<br>'
                + 'Vorname: ' + SMShop.getFormValue("BILLTO", "BILLTO_FIRSTNAME") + '<br>'
                + 'Nachname: ' + SMShop.getFormValue("BILLTO", "BILLTO_LASTNAME") + '<br>'
                + 'Bestellnummer: ' + SMShop.getAttribute(_SMAMailOrderID) + '<br>';
                document.write(sBestelldaten);
           
            </script>
    <span id="ausgabe1"></span>       
                <script>
                var data = "firma=die-firma&nachname=mustermann";

               console.log(data);
        var xhr = new XMLHttpRequest();
        var url = "brokerdatei/testpost.php";
        xhr.open("POST", url, true);
        xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
               xhr.onreadystatechange = function () {
            if (xhr.readyState === 4 && xhr.status === 200) {
                console.log(xhr.responseText);
                document.getElementById("ausgabe1").innerHTML = xhr.responseText;
            }
        };
        xhr.send(data);
    
    </script>