$ .ajax响应在console.log中具有值,但在特定值中没有,如:response.Liter

时间:2016-12-15 15:22:07

标签: php jquery json

在Bootsrap页面中,我使用jQuery发送不同的配方器zu a .php。使用jQuery,我试图从.php中获取结果,以便向用户显示。但是当我从php得到结果时,发生的事情让我无法理解: 传入的响应在控制台中给出结果: 命令:
console.log("Test: "+response+"\n\n Test2: "+response.Richtwert1);
结果:

  

测试:{“成功”:真实,“Rechnung1”:真实,“Liter1”:“2000”,   “Entfernung1”:“91.86”,“Richtwert1”:“2000”,“PpLnetto1”:“3.4”,   “PpLbrutto1”:“4.04”,“Gesamtpreis1”:“91.86”,“Rechnung2”:false,   “Rechnung3”:假

     

Test2:undefined

希望这里有人可以帮助我从这个回应中获取我的价值观。 遵循我的计划的重要部分: index.html中jQ的一部分:

<script>
    $(document).ready(function(){   
        $('#Rechnen_button').on('click',function(){
            //Formular absenden
            //Alte ErrorMeldungen entfernen
            $( '#KundennameZeile' ).removeClass( 'has-error' );
            $( '#LiterZeile1' ).removeClass( 'has-error' );
            var formControl = true;

            //Variable einsammeln
            var Name = "Rechner";
            var Kundenname = $( '#Kundenname' ).val();
            var LiterAuswahlFeld1 = $( '#LiterAuswahlFeld1' ).text();
            var Liter1 = $( '#Liter1' ).val();
            var AB1 = $( '#AbladestellenAuswahlFeld1' ).text();
            var Raten1 = $( '#RatenAuswahlFeld1' ).text();
            var Ort = $( '#OrtAuswahlFeld' ).text();
            var Oel1 = $( '#OelsorteAuswahlFeld1' ).text();
            var LiterAuswahlFeld2 = $( '#LiterAuswahlFeld2' ).text();
            var Liter2 = $( '#Liter2' ).val();
            var AB2 = $( '#AbladestellenAuswahlFeld2' ).text();
            var Raten2 = $( '#RatenAuswahlFeld2' ).text();
            var Oel2 = $( '#OelsorteAuswahlFeld2' ).text();
            var LiterAuswahlFeld3 = $( '#LiterAuswahlFeld3' ).text();
            var Liter3 = $( '#Liter3' ).val();
            var AB3 = $( '#AbladestellenAuswahlFeld3' ).text();
            var Raten3 = $( '#RatenAuswahlFeld3' ).text();
            var Oel3 = $( '#OelsorteAuswahlFeld3' ).text();

            //Kontrolle ob alles wichtige für Rechnung 1 da ist
            if(Kundenname == '') {
                formControl = false;
                $( '#KundennameZeile' ).addClass( 'has-error' );
            }

            if(Liter1 == '') {
                formControl = false;
                $( '#LiterZeile1' ).addClass( 'has-error' );
            }

            if($.isNumeric(Liter1) == false) {
                formControl = false;
                $( '#LiterZeile1' ).addClass( 'has-error' );
            }

            if(formControl) {
                //Rechnung abschicken
                $.ajax({
                    type: "POST",
                    url: "post.php",
                    data: {
                        name:Name,
                        Kundenname:Kundenname,
                        LiterAuswahlFeld1:LiterAuswahlFeld1,
                        Liter1:Liter1,
                        AB1:AB1,
                        Raten1:Raten1,
                        Ort:Ort,
                        Oel1:Oel1,
                        LiterAuswahlFeld2:LiterAuswahlFeld2,
                        Liter2:Liter2,
                        AB2:AB2,
                        Raten2:Raten2,
                        Oel2:Oel2,
                        LiterAuswahlFeld3:LiterAuswahlFeld3,
                        Liter3:Liter3,
                        AB3:AB3,
                        Raten3:Raten3,
                        Oel3:Oel3
                    },
                    success: function(response) {
                        console.log("Test: "+response+"\n\n Test2: "+response.Richtwert1);
                        if(!response.success) {
                            return response.msg;
                        } else {                    
                        $('#RichtwertErgebnis1').html(response.Richtwert1+' L.');
                            $('#EntfernungErgebnis1').html(response.Entfernung1+' €');
                            $('#PlLnettoErgebnis1').html(response.PpLnetto1+' Ct');
                            $('#PpLbruttoErgebnis1').html(response.PpLbrutto1+' Ct');
                            if(LiterAuswahlFeld1=="Liter") {
                                $('#GesamtbruttoErgebnis1').html(response.Gesamtpreis1+' €');
                            } else {
                                $('#GesamtbruttoErgebnis1').html(response.Gesamtpreis1+' € ergeben '+response.Liter1+' L.');
                                $('rechnungsergebnis_1 span:last-child').html('Gesamt brutto ergibt Liter');
                            }
                        }
                    }
                });
            }
        })
    })
</script>

post.php:

<?php
include 'config.php';

$name = $_POST['name'];

if (strlen($name) > 0) {
    if($name=='Rechner'){
        //Rechnung durchführen
        $Kundenname = $_POST['Kundenname'];
        $LiterAuswahlFeld1 = $_POST['LiterAuswahlFeld1'];
        $Liter1 = $_POST['Liter1'];
        $AB1 = $_POST['AB1'];
        $Raten1 = $_POST['Raten1'];
        $Ort = $_POST['Ort'];
        $Oel1 = $_POST['Oel1'];
        $LiterAuswahlFeld2 = $_POST['LiterAuswahlFeld2'];
        $Liter2 = $_POST['Liter2'];
        $AB2 = $_POST['AB2'];
        $Raten2 = $_POST['Raten2'];
        $Oel2 = $_POST['Oel2'];
        $LiterAuswahlFeld3 = $_POST['LiterAuswahlFeld3'];
        $Liter3 = $_POST['Liter3'];
        $AB3 = $_POST['AB3'];
        $Raten3 = $_POST['Raten3'];
        $Oel3 = $_POST['Oel3'];

//Something for you unimporant is deleted

        if(strlen($name) > 0 && ((strlen($Liter1) > 0 && is_numeric($Liter1))||(strlen($Liter2) > 0 && is_numeric($Liter2))||(strlen($Liter3) > 0 && is_numeric($Liter3)))) {
            if(strlen($Liter1) > 0 && is_numeric($Liter1)) {
                //Rechnung 1
                //Variablen Kontrolle
                if($LiterAuswahlFeld1!=='Max. Betrag') {$LiterAuswahlFeld1="Liter";}
                switch ($AB1) {
                    case 1;
                    case 2;
                    case 3;
                    case 4;
                    case 5;
                    case 6;
                    case 7;
                    case 8;
                    break;
                    default: 
                        $AB1=1;
                        break;
                }
                switch ($Raten1) {
                    case 1:
                        $Raten1=0;
                        break;
                    case 2:
                        $Raten1=1;
                        break;
                    case 3;
                        $Raten1=2;
                        break;
                    default: 
                        $Raten1=0;
                        break;
                }
                if($Oel1!=='Premium Heizöl') {$Oel1="Heizöl EL";}

                //Werte berechnen
                $rechnung1=preisrechner($Liter1, $LiterAuswahlFeld1, $AB1, $Raten1, $ortwert, $Oel1, $vkp);

                //Ausgabe für Rechnung
                $ergebnissRechnung1 = '"Rechnung1": true, "Liter1": "'.$rechnung1['Liter'].'", "Entfernung1": "'.$rechnung1['Entfernung'].'", "Richtwert1": "'.$rechnung1['Richtwert'].'", "PpLnetto1": "'.$rechnung1['PpLnetto'].'", "PpLbrutto1": "'.$rechnung1['PpLbrutto'].'", "Gesamtpreis1": "'.$rechnung1['Gesamtpreis'].'"';
            } else {
                $ergebnissRechnung1 = '"Rechnung1": false';
            }


            //Rechnung 2
            if(strlen($Liter2) > 0 && is_numeric($Liter2)) {
                //Variablen Kontrolle
                if($LiterAuswahlFeld2!=='Max. Betrag') {$LiterAuswahlFeld2="Liter";}
                switch ($AB2) {
                    case 1;
                    case 2;
                    case 3;
                    case 4;
                    case 5;
                    case 6;
                    case 7;
                    case 8;
                    break;
                    default: 
                        $AB2=1;
                        break;
                }
                switch ($Raten2) {
                    case 1:
                        $Raten2=0;
                        break;
                    case 2:
                        $Raten2=1;
                        break;
                    case 3;
                        $Raten2=2;
                        break;
                    default: 
                        $Raten2=0;
                        break;
                }
                if($Oel2!=='Premium Heizöl') {$Oel2="Heizöl EL";}

                //Werte berechnen
                $rechnung2=preisrechner($Liter2, $LiterAuswahlFeld2, $AB2, $Raten2, $ortwert, $Oel2, $vkp);

                //Ausgabe für Rechnung
                $ergebnissRechnung2 = '"Rechnung2": true, "Liter2": "'.$rechnung2['Liter'].'", "Entfernung2": "'.$rechnung2['Entfernung'].'", "Richtwert2": "'.$rechnung2['Richtwert'].'", "PpLnetto2": "'.$rechnung2['PpLnetto'].'", "PpLbrutto2": "'.$rechnung2['PpLbrutto'].'", "Gesamtpreis2": "'.$rechnung2['Gesamtpreis'].'"';
            } else {
                $ergebnissRechnung2 = '"Rechnung2": false';
            }

            //Rechnung 3
            if(strlen($Liter3) > 0 && is_numeric($Liter3)) {
                //Variablen Kontrolle
                if($LiterAuswahlFeld3!=='Max. Betrag') {$LiterAuswahlFeld3="Liter";}
                switch ($AB3) {
                    case 1;
                    case 2;
                    case 3;
                    case 4;
                    case 5;
                    case 6;
                    case 7;
                    case 8;
                    break;
                    default: 
                        $AB3=1;
                        break;
                }
                switch ($Raten3) {
                    case 1:
                        $Raten3=0;
                        break;
                    case 2:
                        $Raten3=1;
                        break;
                    case 3;
                        $Raten3=2;
                        break;
                    default: 
                        $Raten3=0;
                        break;
                }
                if($Oel3!=='Premium Heizöl') {$Oel3="Heizöl EL";}

                //Werte berechnen
                $rechnung3=preisrechner($Liter3, $LiterAuswahlFeld3, $AB3, $Raten3, $ortwert, $Oel3, $vkp);

                //Ausgabe für Rechnung
                $ergebnissRechnung3 = '"Rechnung3": true, "Liter3": "'.$rechnung3['Liter'].'", "Entfernung3": "'.$rechnung3['Entfernung'].'", "Richtwert3": "'.$rechnung3['Richtwert'].'", "PpLnetto3": "'.$rechnung3['PpLnetto'].'", "PpLbrutto3": "'.$rechnung3['PpLbrutto'].'", "Gesamtpreis3": "'.$rechnung3['Gesamtpreis'].'"';
            } else {
                $ergebnissRechnung3 = '"Rechnung3": false';
            }

            //Rückgabe
            $ergebniss= '{"success": true, '.$ergebnissRechnung1.', '.$ergebnissRechnung2.', '.$ergebnissRechnung3.'}';
            echo $ergebniss;

        } else {
            header('HTTP/1.1 400 Bad Request', true, 400);
            echo "Der Name und die Literanzahl von wenigstens einer Rechnung muss ausgefüllt sein.";
        }

    } else {
        header('HTTP/1.1 400 Bad Request', true, 400);
        echo "Etwas ist seltsam!";
    }
} else {
    header('HTTP/1.1 400 Bad Request-1', true, 400);
    echo "Das Feld darf nicht leer sein!";
}
?>

感谢所有帮助!

1 个答案:

答案 0 :(得分:2)

你有json - 一个字符串 - 而不是一个javascript对象。

您需要手动解析它或告诉jQuery您希望json返回,以便jQuery可以自动解析它:

$.ajax({
    type: "POST",
    // tell jQuery you expect json back
    dataType: "json",
    url: "post.php",
    // etc.

除此之外,你不应该在php脚本中手动创建json。相反,使用所需的数据结构构建一个数组,并在末尾使用json_encode($your_data_structure)对其进行正确编码。