Ich versuche, einige Daten von Javascript zu PHP zu bekommen. Es ist eine Tabelle, in der die Anzahl der Zeilen variabel ist. Also, ich versuche, alle Daten mit einer Schleife in Javascript zu erhalten und sie dann an PHP zu senden. Dort werde ich eine andere Schleife verwenden, um jede Zeile mit einer anderen Schleife zu speichern. So gibt es den Code:Array mit mehreren Array von Javascript zu PHP
JAVASCRIPT
//---- this is the important section ---- //
var data = new FormData();
var table = [];
for (var i = 1; i <= document.getElementById('nblines').value; i++) {
var date = document.getElementById('date' + i).innerHTML;
if (document.getElementById('l' + i).checked == true) { var type = 1;} else { var type = 2;}
var paiement = document.getElementById('a' + i).innerHTML;
var tps = document.getElementById('b' + i).innerHTML;
var tvq = document.getElementById('c' + i).innerHTML;
var total = document.getElementById('d' + i).innerHTML;
var interet = document.getElementById('e' + i).innerHTML;
var principal = document.getElementById('f' + i).innerHTML;
var balance = document.getElementById('g' + i).innerHTML;
var line = [i,date,type,type,paiement,tps,tvq,total,interet,principal,total];
table.push(line);
};
console.log(table);
data.append('amortTable', table);
------------------------------------------------
| |
| ---- this is the NOT important section ---- |
| |
------------------------------------------------
var token = document.getElementById("csrf_token").content;
var request = new XMLHttpRequest();
request.onreadystatechange = function notify()
{
if (request.readyState === XMLHttpRequest.DONE) {
if (request.status === 200) {
setTimeout(loadPage(page),500);
$.niftyNoty({
type: 'success',
container : 'floating',
html : 'Votre calcul s\'est enregistré avec succès!',
timer : 5000
});
} else {
}
} else {
// still not ready
}
}
request.open("POST", "savecalcul", true);
request.setRequestHeader("X-CSRF-TOKEN", token);
request.send(data);
PHP
foreach ($request->input('amortTable') as $i) {
$line = new Amortissement;
$line -> calcul() -> associate($calcul->id);
$line -> number = $i[0];
$line -> date = $i[1];
$line -> type = $i[2];
$line -> paiement = $i[3];
$line -> tps = $i[4];
$line -> tvq = $i[5];
$line -> total = $i[6];
$line -> interet = $i[7];
$line -> principal = $i[8];
$line -> total = $i[9];
$line -> save();
}
Ich erhalte diesen Fehler local.ERROR: Ausnahme 'Error' mit der Meldung ‚Invalid argument für foreach geliefert() 'in ... der Linie ist:
foreach ($request->input('amortTable') as $i) {
Also, bin ich auf dem richtigen Weg, und wenn ja, was soll ich tun falsch. Wenn ich nicht auf dem richtigen Weg bin, was soll ich tun?
Ja, habe es gesehen. Vielen Dank. Jetzt bekomme ich etwas in der console.log, aber ich habe einen Fehler in PHP: local.ERROR: Ausnahme 'ErrorException' mit Nachricht 'Ungültige Argument für foreach()' in ... –
Ihre PHP-Code ist nicht vollständig. Dieser Fehler bedeutet, dass '$ request-> input ('table')' kein Array ist. – rationalboss
Sie haben das JS-Array zu 'FormData' als' amortTable' hinzugefügt. Wahrscheinlich müssen Sie '-> input ('table')' in '-> input ('amortTable')' ändern, damit es mit dem übereinstimmt, was Sie senden. (oder ändern Sie die JS, um '' Tabelle '' zu verwenden) – Terminus