Mvc Ajax Jquery在帖子上没有刷新视图

时间:2012-08-30 20:00:51

标签: asp.net-mvc-3 jquery

我是ajax和mvc的新手...我在从jquery发回数据时遇到问题。我的问题是正在填充值控制器被命中数据库更新然后它返回到旧数据页面它不刷新我必须单击f5看到更改我做错了什么?提前致谢

Jquery的

                    var values = 
                        {
                            "PagePartIdentifier": element,
                            "PagePartContent": data
                        }
                        $.post(@Html.Raw(Json.Encode(Url.Action("UploadData", "Home"))),values,function(data)
                        {
                            // do stuff;
                        });

模型

public class PagePartModel
{

    public string PagePartIdentifier { get; set; }
    public string PagePartContent { get; set; }
}

控制器

    [HttpPost, ValidateInput(false)]
    [OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
    public ActionResult UploadData(PagePartModel pagePartm)
    {
        UpdatePage(pagePartm);
        ModelState.Clear();
        //return RedirectToAction("Index");
        return Json(new { success = true });

    }

Html是从辅助方法

呈现的
    public static PagePartModel PageAfterContent(this System.Web.Mvc.HtmlHelper html, int page)
    {
        string part = "AfterContent";
        Blog.PageParts pageParts = new Blog.PageParts();

        PagePartModel thispart = pageParts.GetContentForPageByPart(page, part);
        return thispart;
    }

将每个部分的模型返回到页面

3 个答案:

答案 0 :(得分:0)

使用$ .post时,您将通过ajax将数据发送到服务器,因此页面永远不会重新加载。我不确定你的post方法中的UpdatePage(pagePartm);调用是做什么的,但是由于该方法是用ajax调用的,所以它不能改变页面上的任何内容。现在,在$ .post的成功处理程序中,您可以操纵DOM以反映$ .post调用的成功或失败。

答案 1 :(得分:0)

在您的操作中,您应该/可以返回要在页面上显示的数据,而不是返回您的Json(new { success = true });

e.g。

return Json(new { pagePartm }); // if that is what should be returned

然后修改您的$.post()以将数据附加到DOM中。

e.g。

$.post("your_controller_action", { name: "John", time: "2pm" },
  function(data){
    doStuff(data); // this is your point of interaction with the returned data
    // or
    $("#my_h3").val(data.pagePartm.PagePartIdentifier);
    $("#my_div").append(data.pagePartm.PagePartContent);
});

来自jQuery.post文档。

这样可以避免刷新页面以查看结果。

答案 2 :(得分:0)

jquery ajax post cache属性是否为false?

$.ajax({
         url: '/youraction',
         cache: false,
         type: 'post'
         success: function (data) {


         },
         error: function (e) {
             alert(e.responseText);                            
         }
});