Ajax请求意外发送GET而非POST问题求助
解决Ajax POST请求被识别为GET的问题
针对你遇到的“不支持GET请求”错误,结合jQuery 1.10.2的特性,给出以下排查和解决步骤:
1. 检查URL拼接是否正确
可能#codigoTitulo的值为空或未正确获取,导致URL不符合后端POST路由规则,后端将请求识别为GET。在doPost函数开头添加日志,确认URL是否正确:
function doPost() { var targetUrl = "/titulos/editar/" + $("#codigoTitulo").val(); console.log("请求URL:", targetUrl); // 在控制台查看URL // 剩余代码... }
确保URL与Insomnia中测试的一致,比如包含有效的codigoTitulo值。
2. 替换method为type参数
jQuery 1.10.2虽已支持method,但部分场景下type参数兼容性更稳定(这是jQuery早期版本指定请求方法的标准参数),修改Ajax配置:
$.ajax({ type: "POST", // 替换原有的method: "POST" url: targetUrl, data: formData, contentType: "application/json; charset=utf-8", error: function (jqXHR, textStatus, errorThrown) { console.log("错误详情:", jqXHR.responseText, errorThrown); // 查看更详细的错误响应 alert("Erro ao editar título: " + textStatus); } });
3. 确认请求实际发送方式
打开浏览器开发者工具(F12)→ 切换到「Network」标签,触发表单提交后:
- 查看请求的
Method列是否为POST - 检查
Request URL是否与预期一致 - 查看「Response」标签,获取后端返回的完整错误信息,辅助定位问题
4. 排查表单额外提交触发
确认表单内的按钮是否都指定了type="button",避免未指定类型的按钮默认触发submit事件,导致可能的重复GET请求。
修改后的完整Ajax函数示例:
function doPost() { var targetUrl = "/titulos/editar/" + $("#codigoTitulo").val(); console.log("请求URL:", targetUrl); var formData = JSON.stringify($("#form-titulo").serializeArray()); $.ajax({ type: "POST", url: targetUrl, data: formData, contentType: "application/json; charset=utf-8", error: function (jqXHR, textStatus, errorThrown) { console.log("错误详情:", jqXHR.responseText, errorThrown); alert("Erro ao editar título: " + textStatus); }, success: function(response) { console.log("编辑成功:", response); } }); }
内容的提问来源于stack exchange,提问作者loskYz
相关产品推荐
相关产品推荐

