类型为“ POST”的Ajax请求不起作用,仅适用于“ GET”

时间:2020-07-09 17:50:50

标签: java jquery ajax spring-boot post

我试图将请求和ajax发布请求发送到我的springboot mvc控制器,但是没有成功。我看过许多类似的主题,尝试了给定的解决方案,但都没有成功。 如果我将请求类型更改为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;
}

enter image description here 错误:

1 个答案:

答案 0 :(得分:0)

在ajax请求中,您使用的是 <Frame CornerRadius="100" HeightRequest="200" WidthRequest="200" HasShadow="False" HorizontalOptions="Center" Padding="0" IsClippedToBounds="True"> <Image Source="logo" HorizontalOptions="Center" VerticalOptions="Center" /> </Frame> ,根据jQuery’s Ajax-Related Methods的描述

dataType:'application/json'

// The type of data we expect back dataType : "json", 的值应为 json xml html 等。