JQuery.load()仅返回第一个新鲜的答案,仅返回相同的旧数据

时间:2011-03-31 10:54:11

标签: asp.net-mvc jquery

我使用函数JQuery.load()。

第一次通话时,会返回正确的局部视图。

我希望如果我一次又一次点击复选框,每次点击td“示例”都会刷新实际时间。

问题是该功能仅在首次呼叫时返回正确的时间。在下一次调用时,它返回相同的值(在此时刻)。

在debug中,控制器中的断点仅捕获第一个调用。其他电话忽略。

ASP似乎只生成一次局部视图并一次又一次地返回。

如果我需要每次调用新数据,我该怎么办?

对于这个例子,存在没有ajax的解决方案,但我需要它来处理更复杂的问题。

的java:

<script type="text/javascript">
function Example() {
    jQuery('#example').load('/Home/Example/1/1'); 
}
</script>

查看:

...
<table>
    <tr>
        <td>
            <% Html.RenderPartial("Example"); %>
        </td>
        <td id="example">xxx
        </td>
    </tr>
</table>
<input class="checkbox" type="checkbox" name="xxx" id="xxx" 
                                onclick="Example();" />
...

部分视图“Example.ascx”:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<dynamic>" %>
<%@ Import Namespace="System" %>

<%= DateTime.Now.ToLongTimeString() %>

控制器:

public ActionResult Example(string locality, int id)
{
    return PartialView("Example");
}

PS:如果我通过HTML.RenderPartial调用它,它在每次刷新时都是新鲜的,但是ajax的调用仅在编译时的第一次调用时才是新的。重新打印后,它会返回旧数据。

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

您可以使用$.ajax并设置cache: false

像这样:

    $.ajax({
        url: '<%: Url.Action("Requests", "Home", new{ area = "Competition"})%>',
        cache: false,
        type: "GET",
        dataType: "html",
        success: function (result) {
            $("#divCompetitionRequests").html(result);
        }
    });

并且有一个很好的解决方案@ayk回答。