2016-12-15 58 views
0

在Bootsrap頁面中,我使用jQuery來發送不同的公式zu a .php。使用jQuery,我試圖從.php中將結果顯示給用戶。但是,當我從PHP的結果,什麼happend我無法理解: 以下結果傳入響應給在控制檯的: 命令:
console.log("Test: "+response+"\n\n Test2: "+response.Richtwert1);
結果:

測試:{「成功」 :true,「Rechnung1」:true,「Liter1」:「2000」, 「Entfernung1」:「91.86」,「Richtwert1」:「2000」,「PpLnetto1」:「3.4」, 「PpLbrutto1」:「4.04」 ,「Gesamtpreis1」:「91.86」,「Rechnung2」:假, 「Rechnung3」:假

Test2:unde罰款

希望這裏的某個人可以幫助我從我的迴應中獲得我的價值觀。 按照我的計劃的重要組成部分:在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!"; 
} 
?> 

感謝所有幫助!

回答

2

你有json - 一個字符串 - 而不是一個javascript對象。

您需要手動解析它,或者告訴jQuery的您所期望的JSON回來,jQuery可自動爲您解析它:手動在你的PHP腳本

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

除此之外,你不應該創建JSON。相反,使用所需的數據結構構建陣列,並在末尾使用json_encode($your_data_structure)對其進行正確編碼。

+1

很好的答案,不能更好地解釋它自己。 – McStuffins

+0

感謝您的回答!我添加'dataType:「json」'到$ .ajax並創建一個數組,我用這個命令填充'$ ergebniss ['PpLnetto3'] = $ rechnung3 ['PpLnetto'];'最後我發送該數組與echo'json_encode($ ergebniss);'現在我在控制檯中沒有任何結果,沒有錯誤警報和沒有響應。我有後續錯誤嗎? – Faror

+0

@Faror你應該檢查開發人員工具中的響應,如果你沒有得到任何東西,很可能返回的結果是無效的json,你會去javascript中的錯誤處理程序。你是否也在迴應別的什麼? – jeroen

相關問題