在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!";
}
?>
感谢所有帮助!
答案 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)
对其进行正确编码。