简体   繁体   English

Spring MVC Ajax调用POST不起作用

[英]Spring MVC Ajax call POST not working

I have a form which I convert into an object. 我有一个转换成对象的表格。 I wanna pass that object onto the server, a GET ajax request works fine but the object is empty in the java method, then I do the very same request but a POST request and it says error 404. Not sure what I'm doing wrong or what is, followed many examples, but neither of them seem to work. 我想将该对象传递到服务器上,一个GET ajax请求工作正常,但是该对象在java方法中为空,然后我执行了相同的请求,但执行了POST请求,并显示错误404。不确定我在做什么错还是遵循了许多示例,但它们似乎都不起作用。

GET REQUEST 索取

(Ajax call) (Ajax通话)

$.ajax({
     type: "GET",
     url: "/pp/portal/" + businessId64 + "/saveMedicalQuestionnaire",
     contentType: 'application/json',
     dataType: 'json',
     data: { medicalHistoryDTO : medicalHistoryDTO },
     success: function(data) {
            console.log(data);
     }
});

(Object medicalHistoryDTO) (对象medicalHistoryDTO)

宾语

(Java Method) (Java方法)

@RequestMapping(value="/*/saveMedicalQuestionnaire", method = RequestMethod.GET)
public @ResponseBody String postEditMedical(MedicalHistoryDTO medicalHistoryDTO)
{
    System.out.println("COMMON CONTROLLER POSTEDITMEDICAL SAVE MEDICAL QUESTIONNAIRE");
    System.out.println(medicalHistoryDTO);

    return "WORKING FINE";  
}

(Eclipse console) (Eclipse控制台)

COMMON CONTROLLER POSTEDITMEDICAL SAVE MEDICAL QUESTIONNAIRE
MedicalHistoryDTO [list=null, medicalHistorySignature=null]

(Browser console) (浏览器控制台) 在此处输入图片说明

POST REQUEST 发布请求

(Ajax call) (Ajax通话)

$.ajax({
     type: "POST",
     url: "/pp/portal/" + businessId64 + "/saveMedicalQuestionnaire",
     contentType: 'application/json',
     dataType: 'json',
     data: { medicalHistoryDTO : medicalHistoryDTO },
     success: function(data) {
            console.log(data);
     }
});

(Java Method) (Java方法)

@RequestMapping(value="/*/saveMedicalQuestionnaire", method = RequestMethod.POST)
public @ResponseBody String postEditMedical(MedicalHistoryDTO medicalHistoryDTO)
{
    System.out.println("COMMON CONTROLLER POSTEDITMEDICAL SAVE MEDICAL QUESTIONNAIRE");
    System.out.println(medicalHistoryDTO);

    return "WORKING FINE";  
}

(Browser console) (浏览器控制台)

在此处输入图片说明

try to specify path more strictly 尝试更严格地指定路径

@RequestMapping(value="/{id}/saveMedicalQuestionnair", , method = RequestMethod.POST)
public @ResponseBody
String postEditMedical(MedicalHistoryDTO medicalHistoryDTO, @PathVariable("id") int id)

Keep using POST and to recieve you need to use @RequestBody tag 继续使用POST,要接收您需要使用@RequestBody标记

public @ResponseBody String postEditMedical(@RequestBody MedicalHistoryDTO medicalHistoryDTO)

You can see a working example from my code to https://github.com/shakeelabbas1/webservice/blob/master/src/main/java/com/service/controller/ServiceRequestController.java 您可以从我的代码( https://github.com/shakeelabbas1/webservice/blob/master/src/main/java/com/service/controller/ServiceRequestController.java)中看到一个工作示例。

Update: I also see data: { medicalHistoryDTO : medicalHistoryDTO } Replace it with data: medicalHistoryDTO 更新:我也看到data: { medicalHistoryDTO : medicalHistoryDTO }将其替换为data: medicalHistoryDTO

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM