Мне сложно понять, почему я получаю сообщение об ошибке в моем js-файле, когда я хочу вернуть свой ajax: JSON.parse (xhr.responseText)
У меня есть файл php, который извлекает эти данные:
[{Duree: "01:00:00"}, {Duree: "00:30:00"}, {Duree: "01:00:00"}, {Duree:"00:30:00"},…]
0:{Duree: "01:00:00"}
Duree:"01:00:00"
1:{Duree: "00:30:00"}
Я не могу понять, почему у моего json неожиданный конец. Это мой файл php: Он использует некоторые фильтры запросов, а затем перебирает мой набор объектов, а затем добавляет продолжительность каждого объекта в мой массив и json_encode его.
<?php
session_start();
include '../../Reglage/ConnexionBDD.php';
$Query = "SELECT DISTINCT Intervention.IDIntervention,DateFin,Remarque,Intervention.IDAgent,DateDebut,IDTypeTravaux,IDVacation as Vacation, IDEtat as Etat,DateDebut,Duree,DescriptionTache
FROM intervention
JOIN interventionmaincourante ON interventionmaincourante.IDIntervention = intervention.IDIntervention
JOIN participerintervention ON Intervention.IDIntervention=participerintervention.IDIntervention
JOIN faire_la_vacation ON participerintervention.IDAgent = faire_la_vacation.IDAgent
WHERE DateVacation = intervention.DateDebut ";//base de la requete
//SOME SQL FILTERS WHICH ADD CLAUSE IN PRINCIPAL QUERY
//MANY SQL FILTERS
$messagesParPage=100;
$sql = "Select count(*) as NB from Intervention";
$rep = $bdd->query($sql);
$total = $rep->fetch();
$total = $total['NB'];
$nombreDePages=ceil($total/$messagesParPage);
if (intval($_POST['CurrentPage']) != 0) {
if (isset($_POST['CurrentPage'])) {
$pageActuelle=intval($_POST['CurrentPage']);
if ($pageActuelle>$nombreDePages) { // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages...
$pageActuelle=$nombreDePages;
}
}
else { // Sinon
$pageActuelle=1; // La page actuelle est la n°1
}
$premiereEntree=($pageActuelle-1)*$messagesParPage; // On calcul la première entrée à lire
$Query .= " order by DateDebut DESC, IDIntervention DESC, Vacation LIMIT ". $premiereEntree . "," . $messagesParPage;
}
else {
$Query .= " order by DateDebut DESC, IDIntervention DESC, Vacation";
}
$currentID = "";
$lastID = "";
$rep = $bdd->query($Query);
$total = array();
$tot = array();
foreach($rep as $Intervention) {
$idVacation = 0;
switch ($_POST['Vacation']) {
case 'Matin' :
$idVacation = 1;
break;
case 'Apres-Midi':
$idVacation = 2;
break;
case 'Nuit':
$idVacation = 3;
break;
default:
break;
}
if ($Intervention['Vacation'] == $idVacation) {
$Query = 'SELECT Duree FROM fairegammeoperatoire WHERE IDIntervention=:id';
$rep = $bdd->prepare($Query);
$custom = $Intervention['IDIntervention'];
$rep->bindParam(':id',$custom);
$rep->execute();
$Duree = $rep->fetch(PDO::FETCH_ASSOC) ;
array_push($total,$Duree);
}
}
echo json_encode($total);
Мой код JS:
tot = '';
var xhr1 = getXhr();
xhr1.onreadystatechange = function(){
if (xhr1.readyState == 4 && xhr1.status == 200){
Selection = xhr.responseText;
for(let i = 0; i < Selection.length; i++) {
if (i == 0) {
start = Selection[i];
}
if ((i + 1) < Selection.length) {
end = Selection[i + 1];
tot = addTimes(start, end);
console.info(tot);
}
start = tot;
}
alert(tot);
}
};
xhr1.open('POST','maincourante/Ajax/AjaxCalculGammeOperatoire.php',true);
xhr1.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xhr1.send(Send);
Вы уже закодировали результат PHP как JSON, поэтому вам не нужно его JSON.parse()
в Javascript. Это вызовет ошибку!
Я не понимаю, извините, точный json из JS? после анализа возврата ajax? или раньше?
Я делаю это каждый раз, json_encode в моем файле ajax php и в файле JS я получаю результат, используя JSON.parse, и он работает xD
НЕ ТРЕБУЕТСЯ ПАРСИРОВАТЬ возвращенные данные, так как это уже JSON.
Это может помочь, если вы также покажете нам javascript
Хорошо, я следую вашему совету и не ошибаюсь в JSON =) thx
Теперь у меня есть функция AddTimes, которая возвращает (return hours.toString () + ':' + minutes.toString ();)
Я хочу сделать сумму каждой продолжительности, которую я получаю на json и alert (результат) ...
Не могли бы вы представить пример JSON точный, созданного вашим кодом? :-) (Из JavaScript, чтобы мы могли видеть, что возвращается на ваш интерфейс)