当我使用 ajax 发布请求时,为啥在我的 live laravel 项目中显示 404 和 405

Posted

技术标签:

【中文标题】当我使用 ajax 发布请求时,为啥在我的 live laravel 项目中显示 404 和 405【英文标题】:why 404 and 405 shows on my live laravel project when I use ajax post request当我使用 ajax 发布请求时,为什么在我的 live laravel 项目中显示 404 和 405 【发布时间】:2022-01-12 05:47:59 【问题描述】:

我在 laravel 中为我的本地客户端开发了简单的购物车系统,它在我的本地服务器上没有任何问题,但是当我在无限免费托管的实时服务器上发布它时,它有多个问题。当我尝试将主页上的产品添加到购物车时,它显示 404 错误,我正在使用 ajax 请求。

JS 代码:

      jQuery.ajax(
      url: "/add_to_cart",
      method: "post",
      data: jQuery('#formAddToCart').serialize(),
      success: function(result)

我的主页 url 是“new_shop/”,当我从我的 js 代码 url 中删除“/”时,它运行良好,但是在我使用相同功能的产品详细信息页面和产品 url 上显示错误详细页面是“产品名称”,像这样没有“/”;添加到购物车的产品详细信息页面也不适用于“url:”/add_to_cart“”这个网址。我不知道混乱是什么,因为它在我的本地服务器上运行良好。我认为这可能是免费托管的问题。任何帮助将不胜感激。

路由 WEB.php 代码:

            Route::post('add_to_cart',[FrontController::class,'add_to_cart']);  

【问题讨论】:

您尝试过什么来解决问题?你被困在哪里了? 404 错误通常表示您正在调用一个不存在的路由 【参考方案1】:

你在 js 代码中做错了。

您应该像这样为您的路线使用名称

Route::post('/add_to_cart',[FrontController::class,'add_to_cart'])->name('cart.add');

现在像这样从 js 代码中调用它

jQuery.ajax(
    url: "route('cart.add')",
    method: "post",
    data: jQuery('#formAddToCart').serialize(),
    success: function(result)
)

因为我不确定你的路线是否有组 你也可以试试这个

jQuery.ajax(
    url: "URL::to('/add_to_cart')",
    method: "post",
    data: jQuery('#formAddToCart').serialize(),
    success: function(result)
)

并确保您在表单数据中传递 csrf 令牌。

这样您就不必担心您的方法名称以及您的网址。您只需要为您的路线提供一个名称

【讨论】:

这位兄弟我也试过了,让我再试试 显示这个错误 "%7B%7Broute('cart.add')%7D%7D" 404 not found 如果您仍然卡住,请尝试我在答案中编辑的另一种方法

以上是关于当我使用 ajax 发布请求时,为啥在我的 live laravel 项目中显示 404 和 405的主要内容,如果未能解决你的问题,请参考以下文章

当我在我的 Web 应用程序中发送 Ajax 请求时,控制器端会在 laravel 的请求参数中为我提供脚本

为啥ajax一个接一个地发送请求

当我使用 HTTP 协议尝试请求时,为啥会收到错误的请求响应?

为啥我的 Ajax 发布请求在表单提交中被阻止?

为啥 jQuery 的 .ajax() 方法不发送我的会话 cookie?

为啥我的 ajax 请求得到响应 0?