【问题标题】:JQuery Post JSON to MVC not redirectingJQuery Post JSON 到 MVC 不重定向
【发布时间】:2012-10-24 19:21:59
【问题描述】:

我正在尝试加载已将一些 JSON 作为 POST 传递的页面。 JSON 已发送并返回页面,但使用下面的 javascript 我仍保留在原始页面上。我需要重定向到页面

$("#searchForm").submit(function (event) {
                var jsonObjects = {
                    "SomeJson": "SomeData"
                };

                $.ajax({
                    type: "POST",
                    dataType: "json",
                    async: false,
                    data: JSON.stringify(jsonObjects),
                    beforeSend: function (x) {
                        if (x && x.overrideMimeType) {
                            x.overrideMimeType("application/json;charset=UTF-8");
                        }
                    },
                    url: 'Home'
                });
                event.preventDefault();
            });

这会发布 JSON 但页面但不会重定向。页面“主页”返回到浏览器。

我无法在成功时重定向到主页,因为 post 参数不会出现

我尝试过不使用 javascript 并使用标准 html 提交,但似乎无法嵌入 JSON

【问题讨论】:

    标签: asp.net-mvc jquery http-post


    【解决方案1】:

    如果您发出 ajax 请求并且服务器以 3xx 重定向响应,则发出请求的页面不会更改。这是因为任何 ajax 请求都不会改变浏览器中的当前位置,这正是您通常想要使用 ajax 的原因。

    因此,您需要一个可以执行重定向的成功处理程序。将其传递给您的 $.ajax() 调用。

    success: function() {
      window.location.href = '/Home'; // or something
    }
    

    如果请求成功,这会将当前页面更改为您选择的 url。

    【讨论】:

    • 不幸的是,成功处理程序将执行 GET(如果我错了,请纠正我),因此不会包含 POST 正文。 'Home' 的内容取决于 JSON。干杯
    • 您的重定向始终是 GET。您不能 3xx 重定向 POST 请求并让它发出另一个 POST 请求。浏览器不会那样做。也许您需要重新考虑您的方法?
    • 好的,有道理。 Ajax 不是必需的,您知道如何制作包含更改位置的 JSON 的帖子吗?
    • 对于任何感兴趣的人,这是我目前的工作:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多