gpt4 book ai didi

php - Angular/Laravel - 从 mysql 数据库输出 json 数据

转载 作者:行者123 更新时间:2023-11-29 19:37:04 25 4
gpt4 key购买 nike

我正在获取数据,我想使用 laravel 查询生成器从 mysql 输出并将其转换为 JSON 格式,如 w3Schools 建议的那样 W3schools SQL link然后使用 AngularJS 帮助打印获取的 mysql 数据,但它似乎根本没有做任何事情,并且显示了一个空白页面。

Laravel 路线

Route::get('/' ,  [
'as' => 'homepage',
'uses' => 'indexController@main'
]);

索引 Controller

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]);
}

}

带有 AngularJS Controller 的 index.php View

<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 Controller 中尝试过:

改变:

 $http.get("/")

 $http.get("homepage")

也尝试过改变

response.data.user_posts

response.data.posts

基本上我有点迷失,似乎无法理解我做错了什么。提前致谢

最佳答案

您总是返回一个渲染 View ,它永远不会是有效的 JSON 响应。相反,检查它是否是 ajax 请求。此外,Laravel 提供了 collection()'s,应该在可能的情况下使用原始数组或 json 编码来提供堆栈内聚力。试试这个:

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

return view('index);

此外,请确保将 $request 注入(inject) Controller 的方法中:

public function main(Request $request) {

此外,Angular 对 Laravel 的路线一无所知,但这没关系。如果您直接在 View 文件中使用脚本,您仍然可以访问 Laravel 的助手,您可以发出端点请求:

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

否则,如果您的 Angular 在脚本中,只需执行以下操作:

$http.get('/');

您将在 HTTP 请求回调中使用 response.user_posts 访问它。

关于php - Angular/Laravel - 从 mysql 数据库输出 json 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41525115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com