php - 无法从 laravel 中的 AJAX 调用中获取 responseText
问题描述
我有一个如下所示的 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。那么我的代码有什么问题?我无法弄清楚。请帮忙。
解决方案
以 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
]);
}
推荐阅读
- python - Python Graph Search——确定后继节点是否比当前节点更接近目标
- android - EncryptedFile 加密什么类型的文件
- reactjs - 如何在 ReactJS 中使用上下文来更改不同函数中的属性
- apache-flink - 在 Apache Flink/Ververica CE 中添加自定义连接器
- javascript - 在javascript中更新对象属性?
- python - 将pycharm中的终端从sh改为普通
- jpa - 为什么 JPA EntityManager 会阻止代码执行?
- java - 如何检查java方法是否返回null而无需运行两次
- php - 无法使用 ShipStation API 创建订单
- jenkins - Groovy 中的 Jenkins 密码参数