2016-03-25 3 views
2

Я пытаюсь сделать простую поисковую систему в AngularJS. У меня проблема с сообщением между моим клиентом и моим сервером. Я пытаюсь следовать руководству w3schools http://www.w3schools.com/angular/angular_sql.asp.Простая поисковая система базы данных в AngularJS

Вот home.php тело:

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8" /> 
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js">  
</script> 
</head> 

<body> 
<div ng-app="myApp" ng-controller="customersCtrl"> 
<table> 
    <tr ng-repeat="x in names"> 
     <td>{{ x.Name }}</td> 
    </tr> 
</table> 
</div> 

<script> 
var app = angular.module('myApp', []); 
app.controller('customersCtrl', function($scope, $http) { 
    $http.get("server.php") 
    .then(function (response) {$scope.names = JSON.parse(response.data.records);}); 

}); 

</script> 

и вот server.php:

<?php 
header("Access-Control-Allow-Origin: *"); 
header("Content-Type: application/json; charset=UTF-8"); 
error_reporting(2); 

$conn = new PDO('mysql:host=localhost;dbname=mygaloo;charset=utf8', 'root', ''); 
$result = $conn->query("SELECT * FROM associations"); 
$outp = ""; 

while($donnees = $query->fetch()) 
{ 
    if ($outp != "") {$outp .= ",";} 
    $outp .= '{"Name":"' . $donnees["nom"] . '"}'; 
} 

$outp ='{"records":['.$outp.']}'; 
$conn->close(); 


echo($outp); 
?> 

Однако, я получаю эту ошибку: angular.js: 12520SyntaxError: Неожиданный токен u в JSON в позиции 0, любая идея?

+0

Убедитесь, что в 'server.php' нет ошибки. Я считаю, что есть один. – Rayon

+0

Я получаю белую страницу с {{x.Name}}. –

+0

Установите 'error_reporting (2);' и test .. – Rayon

ответ

0

ОК, я понял. Arun Shinde ответ был прав, но вопрос пришел от:

while($rs = $result->fetch(MYSQLI_ASSOC)) { 

Я использую PDO так, используя Mysqli здесь не будет работать, очевидно. Итак, вот полный код, который работает. home.php:

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8" /> 
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js">  
    </script> 
</head> 

<body> 
    <div ng-app="myApp" ng-controller="customersCtrl"> 
    <table> 
     <tr ng-repeat="x in names"> <td>{{ x }}</td> </tr> 
    </table> 
    </div> 

    <script> 
    var app = angular.module('myApp', []); 
    app.controller('customersCtrl', function($scope, $http) { 
      $http.get("server.php") 
      .then(function (response) { 
       $scope.names = response.data; 
      }).then(function(response){ 
       console.log(response) 
      }) 

    }); 
    </script> 
</body> 

server.php:

<?php 
header("Access-Control-Allow-Origin: *"); 
header("Content-Type: application/json; charset=UTF-8"); 

$conn = new PDO('mysql:host=localhost;dbname=mygaloo;charset=utf8', 'root', ''); 
$result = $conn->query("SELECT * FROM associations"); 
$outp = []; 
while($rs = $result->fetch()) { 
    if ($outp != "") 
    array_push($outp,$rs["nom"]); 
} 
$outp =json_encode($outp); 
$conn = null; 
echo($outp); 
?> 

Большое спасибо за ваше терпение всех!

+0

Отлично. Вот почему я дал вам весь PHP-код. Если вы найдете решение, попробуйте принять ответ; После всех усилий для этого только. :-) –

0

Вот ваш угловой код

<script> 
     var app = angular.module('myApp', []); 
     app.controller('customersCtrl', function($scope, $http) { 
       $http.get("server.php") 
       .then(function (response) { 
        $scope.names = response.data; 
       }).then(function(response){ 
        console.log(response) 
       }) 

     }); 
    </script> 

и вот ваш PHP код. Надеюсь, это поможет вам.

<?php 
    header("Access-Control-Allow-Origin: *"); 
    header("Content-Type: application/json; charset=UTF-8"); 

    $conn = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', ''); 
    $result = $conn->query("SELECT * FROM associations"); 
    $outp = []; 
    while($rs = $result->fetch(MYSQLI_ASSOC)) { 
    if ($outp != "") 
    array_push($outp,$rs["nom"]); 
    } 
$outp =json_encode($outp); 
$conn = null; 
echo($outp); 
?> 
+0

Консоль.log возвращает «undefined» –

+0

Игнорируйте это. Получаете ли вы какие-либо успехи в ** $ scope.names = response.data; **? Это ошибка, кроме этого. Вот ваш HTML, чтобы распечатать его. ** <тр нг повтора = "имя в именах"> \t \t \t \t \t {{имя}} \t \t \t \t ** –

+0

'Неожиданный токен <в формате JSON в позиции 0' –

Смежные вопросы