Ответ $.ajax имеет значения в console.log, но не в определенных значениях: response.Liter

134
12

На странице Bootsrap я использую jQuery для отправки различных формул zu.php. С jQuery я пытаюсь получить результат из.php, чтобы показать его пользователю. Но когда я получил результат от php, что-то случилось, что я не могу понять: входящий ответ дает в консоли следующий результат: command:
console.log("Test: "+response+"\n\n Test2: "+response.Richtwert1);
результат:

Test: {"success": true, "Rechnung1": true, "Liter1": "2000", "Entfernung1": "91.86", "Richtwert1": "2000", "PpLnetto1": "3.4", "PpLbrutto1",: "4.04", "Gesamtpreis1": "91.86", "Rechnung2": false, "Rechnung3": false

Test2: undefined

Надежда, что кто-то здесь может помочь мне получить мои ценности из этого ответа. Следуя важным частям моей программы: часть jQ в index.html:

<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!";
}
?>

Спасибо за помощь!

спросил(а) 2021-01-19T13:01:43+03:00 6 месяцев, 2 недели назад
1
Решение
78

У вас есть json - строка, а не объект javascript.

Вам нужно разобрать его вручную или сказать jQuery, что вы ожидаете, что json вернется, чтобы jQuery мог автоматически проанализировать его для вас:

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

Кроме того, вы не должны создавать json вручную в своем php-скрипте. Вместо этого создайте массив с необходимой структурой данных и используйте json_encode($your_data_structure) в конце, чтобы правильно закодировать его.

ответил(а) 2021-01-19T13:01:43+03:00 6 месяцев, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема