单击按钮后,Ajax调用未完成

时间:2013-10-28 21:53:11

标签: javascript jquery spring jquery-ui spring-mvc

当用户点击某个按钮时,我会显示一个对话框以确认其动作,并在我在服务器上执行删除后

@RequestMapping(method = RequestMethod.GET, value = "/secure/admin/deleteuser/{username}")
public String deleteUser(Model model, @PathVariable("username") String username, BindingResult result) {
...
}

$("#deleteUserConfirm").dialog({
        autoOpen: false,
        resizable: false,
        height: 180,
        modal: true,
        buttons: {
            "Delete user": function() {
                var username = $(this).data('username');
                var url = "/secure/admin/deleteuser/" + username;

                //server call to delete this user
                $.ajax({
                    type: "GET",
                    url: url
                }).done(function() {
                    alert("second success");
                }).fail(function() {
                   alert("error");
                }).always(function() {
                   alert("finished");
                });

                $(this).dialog("close");
            },
            Cancel: function() {
                $(this).dialog("close");
            }
        }
    });

我从不去服务器......我看到第二次成功警报并完成警报 我没有任何错误

我试过服务器

@RequestMapping(method = RequestMethod.GET, value = "/secure/admin/deleteuser")
public String deleteUser(Model model, @RequestParam("username") String username, BindingResult result) {

}

在js

                 $.ajax({
                    type: "GET",
                    url: "/secure/admin/deleteuser",
                    data: {username: "RenewalRate2"}
                }).done(function() {
                    alert("second success");
                }).fail(function() {
                   alert("error");
                }).always(function() {
                   alert("finished");
                });

我在chrome中看到了一个请求:

`http://localhost:8084/secure/admin/deleteuser?username=RenewalRate2`

在它的状态是200 ...但在服务器上什么也没做......

3 个答案:

答案 0 :(得分:0)

可能是浏览器缓存的情况。 Firefox可能显示状态为200,但请求永远不会出现浏览器,尝试在末尾附加一个虚拟参数,然后查看结果。

答案 1 :(得分:0)

使用确认对话框。

var status = confirm("Are you sure??");
if(status == true)
{
   //Make an ajax call and delete
}
else
{
  //Do nothing.
}

答案 2 :(得分:0)

我改变了控制器

@RequestMapping(method = RequestMethod.GET, value = "/secure/admin/deleteuser")
@ResponseBody
public void deleteUser(@RequestParam("username") String userName) {
}

和那个工作文件