2017-01-07 3 views
0

я Извлечение данных, что я хочу, чтобы вывести из MySQL с застройщиком Laravel запроса и преобразование его в формат JSON, а w3schools предложил W3schools SQL link И после печати неправдоподобных данных MySQL с AngularJS помогите, но он, кажется, ничего не делает, и он показывает мне пустую страницу.Угловые/Laravel - вывод JSON данные из базы данных MySQL

Laravel маршрут

Route::get('/' , [ 
    'as' => 'homepage', 
    'uses' => '[email protected]' 
]); 

IndexController

class IndexController extends Controller 
{ 
    public function main(){ 
     $data = json_encode(array('user_posts' =>\DB::table('posts') 
       ->orderBy('added_on', 'desc') 
       ->get())); 

    return view('index', ['posts' => $data]); 
    } 

} 

вид index.php с контроллером AngularJS

<head> 

      <!--Angulare --> 
      <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.js"></script> 
      <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular-route.js"></script> 
      <!--Applicazione --> 
      <script src="js/app.js"></script> 
      <script src="js/controller/PoolController.js"></script> 
      <script src="js/service/poolService.js"></script> 
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css"> 
    </head> 

    <body> 
     <div ng-app="myApp" ng-controller="customersCtrl"> 

     <table> 
     <tr ng-repeat="x in names"> 
      <td>{{ x.username }}</td> 
      <td>{{ x.age }}</td> 
     </tr> 
     </table> 

     </div> 





    ### Angular Module and controller ### 
     <script> 
     var app = angular.module('myApp', []); 
     app.controller('customersCtrl', function($scope, $http) { 
      $http.get("/") 
      .then(function (response) {$scope.names = response.data.user_posts; 
      }); 
     }); 
     </script> 
    </body> 

Json выход, как это выглядит:

{"user_posts":[{"id":1,"username":"Moly","age":22,"added_on":"2017-01-05 08:51:18"}, 
{"id":2,"username":"katja","age":22,"added_on":"2017-01-05 08:51:18"}, 
{"id":3,"username":"rumanova","age":22,"added_on":"2017-01-05 08:51:18"}]} 

я пытался до сих пор в контроллере AngularJS:

изменяющемся:

$http.get("/") 

С

пытались также изменения

response.data.user_posts 

с

response.data.posts 

В основном я любопытное потерял и не могу понять, что я делаю неправильно. Заранее спасибо

ответ

0

Вы всегда возвращаете визуализированное представление, которое никогда не будет действительным ответом JSON. Вместо этого проверьте, является ли это ajax-запросом. Кроме того, Laravel предоставляет collection(), который должен использоваться для использования необработанных массивов или json-кодирования, где это возможно, чтобы обеспечить сцепление стека. Попробуйте это:

if ($request->ajax()) { 
    return response()->json(collect(['user_posts' =>\DB::table('posts') 
     ->orderBy('added_on', 'desc') 
    ])); 
} 

return view('index); 

Кроме того, убедитесь, что вы инъекции $request в метод вашего контроллера:

public function main(Request $request) { 

Кроме того, Angular не имеет ни малейшего представления о маршрутах Laravel, но это нормально. Если вы используете скрипты непосредственно внутри файла вида, вы по-прежнему иметь доступ к помощникам Laravel, вы можете сделать свою конечную запрос:

$http.get('{{route('homepage')}}') 

В противном случае, если ваш Угловой в скрипте, просто сделать:

$http.get('/'); 

И вы получите доступ к нему в своем обратном вызове HTTP-запроса с помощью response.user_posts.

+0

когда я проверить, если Ajax запрос существует, то он говорит ложь, а просто возвращает представление, но как именно я могу выводить данные, которые я получил из запроса тогда? Я сейчас совершенно смущен, как честно ... – mulvikciks

0

Вы можете использовать $ routeProvider вместо $ HTML, как это:

app.config(['$routeProvider', function($routeProvider) { 

    $routeProvider. 
    when('/homepage', { 
     templateUrl: '/homepage.html', 
     controller: 'customersCtrl' 
     }); 

}]); 
Смежные вопросы