是这个jQuery帖子阻止MVC3重定向我的视图?

时间:2012-03-02 22:49:22

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

所以这是我的控制器:

public class MyAccountController : Controller
{
    public ActionResult MyAction(int id = 1)
    {
        return View();
    }
    [HttpPost]
    public ActionResult MyAction(FormCollection values)
    {
        return Content(values["something"]);
    }  
}

这是我的观点:

@using (Html.BeginForm())
{ 
    <input type="hidden" name="something" value="something" />
    <input type="submit" />
}

它会按预期工作,如果您单击提交按钮,它将重定向页面并显示“某事”

但是当我将我的视图更改为:

<button id="button">submit</button>

<script type="text/javascript">
    $("#button").on("click", function (e) {
        $.post("/MyAccount/MyAction", {something:"something"})
    });
</script>

它不会将“内容”返回给浏览器,我已经调试了应用程序,它进入我的帖子操作,但是当它到达“返回内容(值[”某事“]);”它没有做任何事情。

是jQuery以某种方式阻止我的应用程序重定向页面吗?

4 个答案:

答案 0 :(得分:2)

$.post()是一个ajax调用。如果你想对它做任何事情,你必须处理结果。

http://api.jquery.com/jQuery.post/

答案 1 :(得分:2)

它没有做任何事情,因为你没有告诉它做任何事情 $.post只是从您的服务器获取数据;它不会显示它或任何东西。

您需要通过传递函数对回调参数中的数据执行某些操作。

答案 2 :(得分:1)

因为@SLaks和@bhamlin说$ .post是一个ajax调用。而且你必须处理它从服务器返回的内容。所以这就是我所做的:

<button id="button">submit</button>

<script type="text/javascript">
    $("#button").on("click", function (e) {
        $.post("/MyAccount/MyAction", { something: "something" }, function (data) {
            $('body').replaceWith(data);
        });
    });
</script>

答案 3 :(得分:0)

看起来你错过了一个分号:

    $.post("/MyAccount/MyAction", {something:"something"})

更改为

    $.post("/MyAccount/MyAction", {something:"something"});