Variable aus javascript an php übergeben

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);
 
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>
 
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.
 
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
 
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?
 
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.
 
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>
 
Zurück