【发布时间】:2018-10-21 23:29:02
【问题描述】:
我有一个如下所示的 AJAX 调用:
function getPosts(){
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.post("get-posts",
function(data, status){
console.log(data);
console.log(status);
});
}
在我的 routes/web.php 中,我有:
Route::post('get-posts','PagesController@getPosts');
controller_function 看起来像这样:
public function getPosts(){
$posts = DB::table('users_queries')->get();
echo json_encode($posts);
}
但问题是控制台记录了一个空字符串。为了确保我正在转换一个 php 对象,我也调用了 gettype($posts); 函数,它返回了对象。然后我认为问题可能出在<script> 标签中,并尝试了这个typeof(data) 并返回了字符串,以确保数据是字符串。但是当我运行console.log(data.length); 时,我很震惊,因为它记录为 0。但我能够执行以下操作:
public function getPosts(){
$posts = DB::table('users_queries')->where('id', 1)->first();
echo $posts->author;
}
一切都很顺利,但我无法获得整个 json。那么我的代码有什么问题?我无法弄清楚。请帮忙。
【问题讨论】:
-
你为什么不使用 Eloquent 而不是 DB。 Eloquent 有
toJson()可以轻松地将集合转换为 JSON 序列化字符串。 laravel.com/docs/5.6/collections#method-tojson -
用这个替换你的回声 -> return response(['data'=> $posts])
标签: php json ajax laravel object