Bonjour/Bonsoir,
J'essaye d'afficher des données JSON depuis une base de données PHPMyAdmin, en vain.
Le fichier JSON est bel et bien générer dans le Network de la console développeur de Google Chrome et semble correct ( pour info, il a cette forme : [{"test":"50"},{"test":"200"},{"test":"111"}] ).
Le problème doit donc venir du scope que j'essaye d'appliquer à ma vue mais je n'arrive pas à cibler le problème... Pas de message d'erreur dans la console, ma div est simplement vide..
Extrait de mon code :
Heres my code :
<u>json.php</u>
<?php
header("Access-Control-Allow-Origin: *");
$con = mysqli_connect("localhost","root","","test");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$data=array();
$q=mysqli_query($con, "select test from mesures");
while ($row=mysqli_fetch_object($q)){
$data[]=$row;
}
echo json_encode($data);
mysqli_close($con);
<u>index.html</u> : http://pastebin.com/MXvXTh1K
<u>mesure-controller.js</u>
<pre><code>
angular.module('mesure', [])
.controller('measureController', ['$scope', 'recordService',
function($scope, recordService) {
this.records = new Object();
function getData(){
$(document).ready(function() {
recordService.getAll(function(callback){
if (callback != null){
//location.reload();
//console.log(callback);
this.records = callback;
return callback;
}
});
})
}
this.records = getData();
//console.log(this.records);
}]);
</code></pre>
<u>recordService.js</u>
<code><pre>
angular.module('recordService', []).factory('recordService', ["$timeout", function ($timeout) {
var RecordService = {};
var recordList = new Array();
return {
getAll : function (callback) {
$(document).ready(function()
{
var url="http://localhost/Effienergy/Effi-Prove/www/database/json.php";
$.getJSON(url,function(result){
//console.log(result);
$.each(result, function(i, field){
var record =
{
"test" : field.test,
"test2" : field.test2,
};
recordList.push(record);
//console.log(record)
});
}).done(function(){callback(recordList)});
});
},
get : function (id) {
for (record in this.recordList) {
if ((this.recordList[record]).id == id) {
return (this.recordList[record]);
}
}
return null;
},
add : function (record) {
this.recordList.push(record);
}}]);
</code></pre>
Salut betaWeb, malheureusement ça ne règle pas le problème. Merci d'essayer d'aider en tout cas
Un autre aspect étrange est que lorsque que j'inspecte l'élément, on dirait que je n'ai pas accès au ng-repeat. Je vois juste : " <!-- Ngrepeat: record in mesureCtrl.records -->. Je ne sais pas si c'est normal