2015-07-12 67 views
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; 
} 
+2

你试过'<按钮类型=“按钮” ...>'使(标准,非Ajax)提交表单没有按不会同时发生?或者用jQuery绑定click处理器并使用'event.preventDefault()'? – nnnnnn

+0

我加了type =“button”。然后它解决了这个问题。谢谢。 – BAE

+0

@nnnnnn,真的吗?我不知道'type'可以用来避免'event.preventDefault'和点击处理程序。谢谢 –

回答

0

添加类型= “按钮”(例如<button type="button" ...>),使得(标准,非Ajax)表单提交不会同时发生。

或绑定单击处理与jQuery和使用event.preventDefault()