【问题标题】:Ajax request with type 'POST' not working, only with 'GET''POST' 类型的 Ajax 请求不起作用,只能使用 'GET'
【发布时间】:2020-10-30 09:34:33
【问题描述】:

我正在尝试向我的 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;
}

错误:

【问题讨论】:

  • 您的服务器正在其控制台输出上打印错误消息。发布它们。
  • 你的意思是在 Eclipse 控制台中吗?
  • 500 表示服务器端错误,请检查后端应用程序中的日志
  • 这就是问题所在,我的后端应用程序中根本没有日志!!!
  • 无论服务器的标准输出在哪里,如果您在 Eclipse 中运行它,通常是 Eclipse 控制台。

标签: java jquery ajax spring-boot post


【解决方案1】:

在您的 ajax 请求中,您使用的是 dataType:'application/json',根据 jQuery’s Ajax-Related Methods 说明

// The type of data we expect back
dataType : "json",

dataType的值应该是json,或xml,或html

【讨论】:

    猜你喜欢
    • 2015-01-05
    • 2016-11-05
    • 2017-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多