在Ajax发布后更新输入字段

时间:2010-10-05 22:08:44

标签: jquery asp.net-mvc

我正在做我的第一个网络应用程序(不是编程的新手),我有一个小问题,我知道为什么我有它但我需要一种方法来解决它。

我在页面上发了一个ajax帖子,ajax post使用两个隐藏字段来检索一些数据,将它发送到Action并获得一些json显示。完美。

问题是我正在用ajax帖子更改页面的内容。它只是一个日历,我有一个在几个月之间移动的链接。我使用2个隐藏字段来跟踪月份和年份(我使用这2个值传递给操作并更改月份)。

我的问题是,当我点击链接时,月份会发生变化(我的代码没问题),但DOM仍然是旧的。

问题是我使用2个隐藏字段来跟踪实际月/年,因为我需要jQuery上的值(似乎如果我需要使用我的模型数据与jQuery我必须将它保存在隐藏值和稍后检索它。当我通过ajax更改月份时,我希望2个隐藏字段更新其值......

<input id="curMon" type="hidden" value="<%: Model.Month %>" />
<input id="curYear" type="hidden" value="<%: Model.Year %>" />

...使用新的月份数据。

我知道当你做一个ajax帖子时,DOM仍旧是旧的。我尝试使用livequery:

$("#forward").live("click", function () {                

            $.post($(this).attr("href"), function (response) {
                $("#calendar").replaceWith($(response).filter("div#calendar"));
                loadDays(currentMonth);
            });
            return false;
        });

前进是链接。日历是包含日历和两个隐藏字段的div。 loadDays只是让一些json改变日历上的东西。

currentMonth是:

        var month = $("#curMon").val();
        var year = $("#curYear").val();

        var currentMonth = { Month: month, Year: year };

嗯,我需要通过ajax更改月份时,我可以从隐藏字段获取新值而不是旧值。

有没有办法做到这一点,或者我正在努力做到这一点?

1 个答案:

答案 0 :(得分:1)

看起来您没有更新月份和年份变量的值,只需将选择器分配给变量,以便更新currentMonth。

    var month = $("#curMon");
    var year = $("#curYear");

    var currentMonth = { Month: month.val(), Year: year.val() };

当前月份需要在代码的实时部分重新分配,或者您可以这样做

    $("#forward").live("click", function () {                

        $.post($(this).attr("href"), function (response) {
            $("#calendar").replaceWith($(response).filter("div#calendar"));
            loadDays({Month: $("#curMon").val(), Year: $("#curYear").val() });
        });
        return false;
    });