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

あなたの行動では、あなたはあなたを返す代わりに、あなた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

$.post を使用すると、データが ajax 経由でサーバーに送信されるため、ページがリロードされることはありません。post メソッドの呼び出しが何をしているのかわかりませんUpdatePage(pagePartm);が、そのメソッドは ajax で呼び出されているため、ページ上の何も変更できません。$.post の成功ハンドラーで、DOM を操作して $.post 呼び出しの成功または失敗を反映させることができます。

于 2012-08-30T20:08:41.243 に答える
0

jquery ajaxポストキャッシュプロパティはfalseですか?

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


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