0
在页面A上,我使用ajax将数据发送到服务器。在严重的一方,春天控制器获取数据后,返回欢迎页B. Evergthing在Firefox和IE上运行良好。但是在chrome上,ajax调用成功后将数据发送到服务器,我们可以得到响应:我想要的页面B.但是页面B只显示1秒。然后再跳回到页面A.现在想想为什么?谢谢。使用ajax发送数据后跳转到上一页
形式HTML:
<form class="form" id="register-form">
<input id="username" type="text" placeholder="Username" name="username">
<input id="password1" type="password" placeholder="Password" name="password1" >
<input id="password2" type="password" placeholder="Password" name="password2">
<input id="email" type="text" placeholder="Email" name="email">
<input id="phonenumber" type="text" placeholder="Phone Number" name="phonenumber">
<button onclick="register()" id="register-button">Join us!</button>
</form>
的Ajax:
$.ajax({
url: "/myporject/user/addUser",
type: 'GET',
dataType: 'text',
contentType: "application/json; charset=utf-8",
async: false,
cache : false,
data: {
username:username,
password:pwd1,
email:email,
phonenumber:phone
},
success : function(response) {
alert("response:" + response);
document.open();
document.write(response);
document.close();
},
error: function(xhr, textStatus, error){
alert("error!!!");
console.log(xhr.statusText);
alert(textStatus);
console.log(error);
}
});
弹簧控制器:
@RequestMapping(value = "/addUser", method = RequestMethod.GET)
public @ResponseBody ModelAndView addUser(
@RequestParam(value = "username") String username,
@RequestParam(value = "password") String password,
@RequestParam(value = "email") String email,
@RequestParam(value = "phonenumber") String phonenumber) {
User user = userService.createUser(username, password, email, phonenumber,
User.ROLE_CUSTOMER);
ModelAndView myview = new ModelAndView("welcome");
return myview;
}
你试过'<按钮类型=“按钮” ...>'使(标准,非Ajax)提交表单没有按不会同时发生?或者用jQuery绑定click处理器并使用'event.preventDefault()'? – nnnnnn
我加了type =“button”。然后它解决了这个问题。谢谢。 – BAE
@nnnnnn,真的吗?我不知道'type'可以用来避免'event.preventDefault'和点击处理程序。谢谢 –