0

我是 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;
    }

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

4

3 回答 3

0

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

于 2012-08-30T20:08:41.243 回答
0

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

例如

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

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

例如

$.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文档。

这将避免刷新页面以查看结果的需要。

于 2012-08-30T20:15:30.540 回答
0

jquery ajax 后缓存属性为假?

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


         },
         error: function (e) {
             alert(e.responseText);                            
         }
});
于 2012-08-31T09:17:42.553 回答