Ajax post 操作成功返回404

Ajax post returning 404 even when the operation is successful

我正在 ajax post 调用我的支持 spring 控制器。我看到由于 post,数据已成功保存在数据库中,但在浏览器控制台上,我看到 POST 抛出 404。此外,一旦调用 returns 来自 spring 控制器,ajax 调用的错误函数被调用。

谁能告诉我我在这里遗漏了什么。

$('#submitMessage').submit(function(e){
    e.preventDefault();
    var formData = {};
    var msg=document.getElementById('iconLeft4-1');
    var url = "${context}/wasadmin/support/ajax/send";
    formData['comment']=msg.value;
    formData['commented_by']='1';
    formData['supportId']='1';
    formData['userType']='O';
    console.log(JSON.stringify(formData));
    $.ajax({
        type : 'POST',
        contentType: "application/json",
        url : url,
        dataType : 'json',
        data:JSON.stringify(formData),
        success:function(data,status,xhr){
            console.log('saved successfully');

            },
        error:function(data,status,xhr){
            console.log('error occured');  // This gets  printed
            }

        });

控制器

@PostMapping(value="/ajax/send")
    public void sendSupportMessage(@RequestBody SupportConversationDTO supportConversationDTO) {
        supportConversationService.save(supportConversationDTO);
        return;
    }

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

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

但是从你的控制器,你 returning void!!!

您需要更新您的 ajax 请求,删除 dataType 并更新 success:function

$.ajax({
    type : 'POST',
    contentType: "application/json",
    url : url,
    data:JSON.stringify(formData),
    success:function(data) {
        console.log('saved successfully');
    },
    error:function(data,status,xhr) {
        console.log('error occured');
    }
});

然后更改您的控制器代码,return 从中添加一些内容并添加 @ResponseBody

@PostMapping(value="/ajax/send")
@ResponseBody
public String sendSupportMessage(@RequestBody SupportConversationDTO supportConversationDTO) {
    supportConversationService.save(supportConversationDTO);
    return "success";
}