javascript - 此路由不支持 POST 方法。支持的方法:GET、HEAD。- {Ajax、jQuery、Laravel}
问题描述
我正在尝试使用按钮单击删除图像。我正在使用 jQuery ajax 将 post 请求发送到后端,后端是 Laravel。当单击按钮并且我没有使用表单时,我正在触发 POST 请求。我不确定这是否是正确的方法。非常感谢任何想法/建议。
这是我的html代码
<div class="deal-images-in-new-deal-modal" id="deal-images-after-uploading-section" style="display:flex; justify-content: center; padding:10%; flex-wrap: wrap;">
<div class="new-deal-upload-image">
<img src="" width="150" height="150">
</div>
<div class="new-deal-upload-icon">
<button type="submit" class="btn delete_image_button" id="after_image_upload_0" value="151159">
<i class="trash icon" id="after_image_upload" style="color:red;"></i>
</button>
</div>
<div class="new-deal-upload-image">
<img src="" width="150" height="150">
</div>
<div class="new-deal-upload-icon">
<button type="submit" class="btn delete_image_button" id="after_image_upload_1" value="151160">
<i class="trash icon" id="after_image_upload" style="color:red;"></i>
</button>
</div>
<div class="success-message">Test</div>
</div>
这是JS脚本文件
$(document).on('click', '.delete_image_button',function(e) {
e.preventDefault();
var image_id = $(this).val();
$.ajax({
type: "POST",
url: '/deals/delete-image/'.image_id,
dataType: 'JSON',
success: function(data) {
console.log("inside success fuction", data);
html = "<div id='success-message'>The image id is "+data+"</div>";
$('.success-message').replaceWith(html);
}
});
});
这是 Laravel Routes 文件 Routes.php中的路由
Route::post('deals/delete-image/{image_id}','MainController@deleteImages');
这是代码 laravel 控制器文件
主控制器.php
public function deleteDealImages($image_id) {
\Log::info("inside deleteDealImages function in back end");
return $image_id;
}
我收到带有错误响应的 405 状态代码
{
"message": "The POST method is not supported for this route. Supported methods: GET, HEAD.",
"exception": "Symfony\\Component\\HttpKernel\\Exception\\MethodNotAllowedHttpException",
"file": "/var/www/vendor_portal/vendor/laravel/framework/src/Illuminate/Routing/AbstractRouteCollection.php",
"line": 117
}
我尝试了许多不同的方法,但仍然不断收到此错误。有人可以帮我解决这个问题吗?
解决方案
在您的 javascript 代码中,在连接字符串的 ajax url 部分中,您应该使用“+”而不是“。”
你的代码
$.ajax({
type: "POST",
url: '/deals/delete-image/'.image_id,
dataType: 'JSON',
success: function(data) {
console.log("inside success fuction", data);
html = "<div id='success-message'>The image id is "+data+"</div>";
$('.success-message').replaceWith(html);
}
});
你应该写的代码
$.ajax({
type: "POST",
url: '/deals/delete-image/' + image_id,
dataType: 'JSON',
success: function(data) {
console.log("inside success fuction", data);
html = "<div id='success-message'>The image id is "+data+"</div>";
$('.success-message').replaceWith(html);
}
});
推荐阅读
- java - HeapDumpOnOutOfMemoryError 在 docker 容器中运行时不会转储堆
- swiper - 多张幻灯片滑动器 - 刷新页面更改行为
- regex - 使用 powershell 和 regex 操作字符串
- python - 如何有效地在python的“for-loop”中应用多线程?
- javascript - Vuex getter 在组件中获取用户角色
- java - 读取资产中的文件时应用程序在启动时崩溃
- python - cygwin64中的configure命令返回错误gcc not found
- apache-kafka - 为什么升级后 ksqldb 不显示流?
- python - Python Beautifulsoup htmltable 提取问题
- kotlin - 优雅的 Kotlin 对象丰富