java - 'POST' 类型的 Ajax 请求不起作用,仅使用 'GET'
问题描述
我正在尝试向我的 springboot mvc 控制器发送和 ajax 发布请求,但没有成功。我查看了许多类似的主题,尝试了给定的解决方案,但根本没有成功。如果我将请求类型更改为 GET,它会触发控制器端点。
端点功能甚至没有在控制器中被触发。它在浏览器控制台中仅显示以下错误:jquery-3.4.1.js:9837 POST http://localhost:8080/rede-credenciada 500
我向邮递员提出了同样的要求,它给出了以下错误:
{
"timestamp": "2020-07-09T17:46:20.920+0000",
"status": 999,
"error": "None",
"message": "No message available"
}
注意:它只发生在 POST 请求中,如果我更改为 GET,它可以正常工作。该请求被控制器“监听”。
这是我的ajax请求:
const json = {
idGrupoProcedimento: 0,
idTipoEspecialidade: $("#especialidade").val(),
uf: $("#estado").val(),
codCidade: $("#cidade").val()
}
const jsonString = JSON.stringify(json);
$.ajax({
url: "/rede-credenciada",
type: 'POST',
contentType: "application/json",
dataType: "application/json",
data: jsonString,
success: function(data){
console.log(data);
},
error: function(e) {
console.log(e.message);
}
});
在这里,我的端点:
@RequestMapping(value = "/rede-credenciada", method = RequestMethod.POST, consumes = "application/json")
@ResponseBody
public RedeCredenciadaResponse buscaRedeCredenciadaPorFiltro(@RequestBody RedeCredenciadaRequest request) {
... some logic
RedeCredenciadaResponse redeCredenciada = new RedeCredenciadaResponse();
redeCredenciada.setPessoasFisicas(pessoas);
redeCredenciada.setEmpresas(empresas);
return redeCredenciada;
}
这是我的包装类:
public class RedeCredenciadaRequest {
private int idGrupoProcedimento;
private int idTipoEspecialidade;
private String uf;
private String codCidade;
public int getIdGrupoProcedimento() {
return idGrupoProcedimento;
}
public void setIdGrupoProcedimento(int idGrupoProcedimento) {
this.idGrupoProcedimento = idGrupoProcedimento;
}
public int getIdTipoEspecialidade() {
return idTipoEspecialidade;
}
public void setIdTipoEspecialidade(int idTipoEspecialidade) {
this.idTipoEspecialidade = idTipoEspecialidade;
}
public String getUf() {
return uf;
}
public void setUf(String uf) {
this.uf = uf;
}
public String getCodCidade() {
return codCidade;
}
public void setCodCidade(String cidade) {
this.codCidade = cidade;
}
解决方案
在您正在使用的 ajax 请求中dataType:'application/json'
,根据jQuery's Ajax-Related Methods Description
// The type of data we expect back
dataType : "json",
值dataType
应该是json,或xml,或html等。
推荐阅读
- javascript - jQuery 动态表搜索
- javascript - 如何在 Flask 中使用 NPM 模块?
- c# - 使用多年后更新数据库
- neo4j - NEO4J BoltConnectionError:未找到连接,您连接到 Neo4j 了吗?
- javascript - 访问本地目录以从 localhost 检索文件并回写
- javascript - Postgres Javascript Promise 不返回修改后的结果
- python - 使用 Lambda 更新文本文件
- javascript - DataTable - 使值可排序
- loops - 通过数据值向后循环
- xml - 试图在同一个 XML 文档中使用 XSLT 和 Key 函数查找相关值