使用Ajax向Laravel添加评论遇POST路由不支持报错,求解决方案
解决Laravel Ajax POST请求报错问题
问题排查与修复步骤:
- 修正JS表单提交逻辑
你的JS代码缺少完整的表单提交事件绑定,且e.preventDefault()位置错误,导致表单默认以GET方式提交到当前页面,引发路由方法不匹配错误。修正后的完整JS代码:
$('.sendcomment').submit(function(e) { // 先阻止表单默认提交行为,必须放在最前面 e.preventDefault(); var data = $(this).serialize(); $.ajax({ method: 'POST', url: '/comment_add', data: data, statusCode: { 404: function() { alert('请求地址不存在'); } }, complete: function(response) { // 去除响应文本的空白字符,避免判断出错 if(response.responseText.trim() === 'ok') { alert('评论提交成功'); // 提交成功后清空表单 $(this)[0].reset(); } else { console.log('错误信息:', response.responseText); } } }); });
移除不必要的
@method('PUT')
你使用的是POST请求,添加@method('PUT')会将请求方法伪装成PUT,与路由定义的POST不匹配,直接删除该代码即可。确认路由配置正确性
- 确保
Route::post('/comment_add','Admin\CommentController@addcomment');写在routes/web.php文件中(而非api.php,api路由默认带/api前缀,若写在api.php则Ajax URL需改为/api/comment_add)。 - 检查是否存在同路径的GET路由,若有会导致请求匹配冲突,需删除或调整路由路径。
- 重新清除路由缓存
执行以下命令确保路由缓存被完全清除:
php artisan route:clear php artisan config:clear
- 验证控制器与方法
确认Admin\CommentController文件位于app/Http/Controllers/Admin目录下,命名空间与方法定义正确:
namespace App\Http\Controllers\Admin; use Illuminate\Http\Request; class CommentController extends Controller { public function addcomment(Request $request) { // 后续可添加数据库写入逻辑,示例如下: // Comment::create([ // 'email' => $request->email, // 'name' => $request->comment_name, // 'content' => $request->comment // ]); return 'ok'; } }
调试技巧
打开浏览器开发者工具(F12),切换到Network标签,提交表单后查看请求的方法、URL及响应内容,可快速定位问题所在。
内容的提问来源于stack exchange,提问作者Вероника Машкова
相关产品推荐
相关产品推荐

