无法从 laravel 中的 AJAX 调用中获取 responseText
Posted
技术标签:
【中文标题】无法从 laravel 中的 AJAX 调用中获取 responseText【英文标题】:Unable to get responseText from an AJAX call in laravel 【发布时间】: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])
【参考方案1】:
以 JSON 格式返回您的响应:https://laravel.com/docs/5.6/responses#json-responses
public function getPosts()
$posts = DB::table('users_queries')->get();
return response()->json([
'status' => 'success',
'data' => $posts
]);
【讨论】:
这显示500 Internal Server
错误并且不起作用!
查看storage/logs/laravel.log
或您正在记录的任何日志文件以了解您遇到的错误,清除日志文件并运行 ajax 可能更容易以上是关于无法从 laravel 中的 AJAX 调用中获取 responseText的主要内容,如果未能解决你的问题,请参考以下文章
如何从数据库中获取图像并在 laravel 中使用 ajax 以编辑形式预览它?