我正在发出POST请求以启动引导端点,并希望从服务器返回数据。通过在Postman中测试我的API,效果很好。但是在进行测试时, chrome,它甚至没有响应,chrome NETWORK条甚至没有记录。 所以代码很简单,我找不到任何问题,RestController
@PostMapping("/signup")
public User signup(@RequestBody ModelUser user){
//fetch data from DTO and craft a user
User userData=user.adapter();
//...code here omit for sake of brevity
return userData;
}
当我使用logger(slf4j)进行调试时,它确实从ajax获取数据。 和ajax:
$("#sign-up").submit(function () {
var userInfo={}
userInfo["phone"]=$("#phone").val()
userInfo["password"]=$("#password").val()
$.ajax({
//ajax successful send to spring boot endpoint
type:"POST",
contentType:"application/json",
url:"http://localhost:8080/signup",
data:JSON.stringify(userInfo)
}).then(
function(){
//this doesn't print in console
console.log("Hello Callback is executed")
}
)
})
很奇怪,使用GET请求时从未遇到过这种情况,因为使用GET测试GetMapping端点时成功调用了Ajax回调。
哦,还有很多类似的问题
我没有在Chrome中获得任何响应状态代码,并且完全没有涉及CORS
答案 0 :(得分:0)
您是否尝试过在Java中添加一个消费并产生Json的媒体类型
@PostMapping(path="/signup", consumes=MediaType.APPLICATION_JSON_VALUE, produces=MediaType.APPLICATION_JSON_VALUE)
并在javascript中明确设置Accept标头
$.ajax({
//ajax successful send to spring boot endpoint
type:"POST",
headers: {Accept : "application/json"},
contentType:"application/json",
url:"http://localhost:8080/signup",
data:JSON.stringify(userInfo)
})
答案 1 :(得分:0)
很抱歉我的前端技能不佳,主要原因是我不了解Javascript事件。
$("#sign-up").submit(function (e) {
//e.preventDefault();
var user={};
user["phone"]="187308";
user["name"]="icywater";
$.ajax({
type:'POST',
contentType:'application/json',
data:JSON.stringify(user),
url:"http://localhost:8080/test"
}).done(function(data){
console.log("Hello Callback is executed");
console.log(data)
});
});
在此处单击“提交”时,它实际上已经提交了表单并且不等待ajax代码被执行,因此我应该使用e.preventDefault()
来抑制默认行为。没什么
与POST或邮递员有关,它与表单提交默认行为,ahh,乌龙事件有关。