Laravel 8中Ajax请求无数据返回问题求助
问题分析与解决
你的代码存在两个关键问题,导致控制台没有输出预期内容:
数据类型不匹配
你在Ajax请求里指定了dataType: 'json',这要求服务器必须返回合法的JSON格式数据,但控制器的get_foo方法返回的是纯字符串"this is not a test",并非JSON格式。jQuery解析非JSON数据时会触发错误回调,但你没有定义error函数,所以看起来没有任何输出。解决方法二选一:
- 修改控制器,返回JSON格式数据:
public function get_foo() { return response()->json("this is not a test"); } - 移除Ajax请求中的
dataType: 'json',让jQuery自动识别返回数据类型:$.ajax({ headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') }, method : 'GET', url : "get_foo", success : function(result){ console.log("The result is --> %o", result); } });
- 修改控制器,返回JSON格式数据:
缺失CSRF元标签(非核心问题,但需注意)
你的Blade模板<head>中没有添加CSRF验证的元标签,虽然GET请求默认不需要CSRF验证,但如果后续改为POST请求,必须添加该标签才能通过验证:<meta name="csrf-token" content="{{ csrf_token() }}">
另外,建议在Ajax请求中添加error回调,方便快速排查问题:
error: function(xhr, status, error) { console.log("请求错误信息:", error); }
内容的提问来源于stack exchange,提问作者fat penguin
相关产品推荐
相关产品推荐

