渲染视图并使用Ajax jQuery显示<p> </p>

时间:2013-12-09 21:12:45

标签: javascript jquery ajax asp.net-mvc

在我的应用中,我有这个小方法:

$('#checkOut').click(function() {
        $('#loading').show();
        $.get("/Checkout/AdressAndPayment");
    });

我想要的只是显示#loading段:

<p id="loading" style="display: none" class="center">
    Loading. Please wait... @Html.Image("~/Images/Functional/ajax-loader.gif", null, new {@class = "nullify"})
</p> 

这样我的用户就知道该应用正在计算背景中的内容。

但我还需要在我的控制器方法中渲染一个全新的视图:

[HttpGet]
public ActionResult AdressAndPayment()
{
    mOrder = new OrderInfo();

    ShoppingCart cart = ShoppingCart.GetCart(HttpContext);

    mOrder = cart.CreateOrder(mOrder);

    return View(mOrder);
}

这不起作用。我的意思是,整个过程很顺利,如果我使用标准ActionLink或带using (Html.BeginForm())的按钮,它可以正常工作,但我想同时执行这两项操作:显示<p>,然后得到视图。我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

我认为你必须使用.done回调

$.get("/Checkout/AdressAndPayment")
.done(function() {
   makeViewCallinSomeWay();
});

你在使用Yii吗?

答案 1 :(得分:0)

也许不是最优雅的解决方案,但这就是我所做的:

首先,观点:

using (Html.BeginForm("AdressAndPayment", "Checkout", FormMethod.Get, new { id = "checkOut" }))
{
    <input type="submit" value="Checkout >>"/>
}

然后是javascript:

$('#checkOut').click(function() {
    $('#loading').show();
});

一切正常,因为我在开始时提交表格。但对于所有发表评论的人:我可以用回调来做整个视图,包括布局中的部分视图?