如何防止在将 json 数据发送到 mvc3 中的 httppost 操作后重定向到查看



我在开发单页 Web 应用程序时遇到问题。

当 jQuery 将 json 发送到 HTTPPOST 操作时:

$('#user_dialog .create').click(function () {
                            var user = getInfoUser();
                            $.ajax({
                                url: '@Url.Action("Create", "User")',
                                async: false,
                                type: 'POST',
                                data: JSON.stringify(user),
                                datatype: 'json',
                                contentType: 'application/json;charset=utf-8',
                                success: function (data) {
                                    $('#user_dialog').dialog("close");
                                }
                            });
                        });

我在控制器中的 HTTPPOST 操作将处理请求

[HttpPost]
  public String Create(UserAddViewModel model)
        {
            try
            {
                // TODO: Add insert logic here
                return JsonConvert.SerializeObject(true);
            }
            catch
            {
                return JsonConvert.SerializeObject(false);
            }
        }

我的jQuery成功回调函数将被触发,数据"true"将被接收。

但现在的问题是在此之后,页面将被重定向到/User/Create view 页面

不希望它重定向到页面,我只想通过我的 jQuery 代码处理 UI。

那是因为它是HTTPPOST操作吗?

实际原因是什么以及如何解决?

据推测,您单击的内容是URL。您不会阻止默认事件(加载网址)在点击事件中发生

$('#user_dialog .create').click(function (event) {
    event.preventDefault();
    //rest of function

每当单击事件完成时,接下来将发生默认事件(如果是链接,则加载 URL、如果是提交按钮则提交表单、切换复选框等)。为了防止这种情况,您必须使用 preventDefault() 或返回 false 来显式执行此操作。有关文档,请参阅 http://api.jquery.com/event.preventDefault/。

最新更新