Jquery 在其oncomplete函数中单击ajax.actionlink时,我可以';t使用请求的数据更新div的html

Jquery 在其oncomplete函数中单击ajax.actionlink时,我可以';t使用请求的数据更新div的html,jquery,ajax,asp.net-mvc,Jquery,Ajax,Asp.net Mvc,在一个局部视图中,我看到了一些ajax.ActionLinks,当单击它时,它会更新div'importpartupdate'(它们只是用新的ajax.ActionLinks和其他routeValue更新div)。问题是,当这个更新完成时,我必须更新另一个div-这取决于单击的链接。这就是为什么在我的ajax.ActionLink的OnComplete函数中,我向action'GridViewLanguage'发出ajax请求,该请求将返回部分视图,该视图应使用class.floatLangua

在一个局部视图中,我看到了一些ajax.ActionLinks,当单击它时,它会更新div'importpartupdate'(它们只是用新的ajax.ActionLinks和其他routeValue更新div)。问题是,当这个更新完成时,我必须更新另一个div-这取决于单击的链接。这就是为什么在我的ajax.ActionLink的OnComplete函数中,我向action'GridViewLanguage'发出ajax请求,该请求将返回部分视图,该视图应使用class
.floatLanguage
更新另一个div。因此,当我第一次单击链接时,一切正常,我的两个div都正确更新。但是当我第二次点击一个新的链接时,看起来FloatLanguage div并没有更新,就像浏览器缓存了我不知道的以前的信息一样。我尝试了缓存:false-没有任何效果

     @model  MvcBeaWeb.GroupMenu



<nav class="sidebar-nav">

    <div class="divLeftShowMenu">
        <ul>
            @{
                if (Model != null)
                {
                    foreach (MvcBeaDAL.WebServiceBeaMenu item in Model.MenuLeft)
                    {

                      <li>
                        @Ajax.ActionLink(@item.SpecialWord, "ImportShow", new { id = Model.LanguageName, menuID = item.ID, articlegroupID = item.ArticlegroupID, counter = 1 }, new AjaxOptions { UpdateTargetId = "importPartUpdate", HttpMethod = "GET", InsertionMode = InsertionMode.Replace, OnComplete = "success("+@item.ID+")" }, new { id=item.ID})

                      </li> 
                    }
                } 
            }
        </ul>
    </div> 


</nav>
   <script>
       function success(ids) {

           var nocache = new Date().getTime(); 

           jQuery.ajax({
                url: '@Url.Action("GridLanguageView")/?menuID='+ids


           }).done(function (data)
           {


             $(".floatLanguage").replaceWith(data);
             alert(data);
           });



       }
     </script>
@model MvcBeaWeb.GroupMenu
    @{ 如果(型号!=null) { foreach(Model.MenuLeft中的MvcBeaDAL.WebServiceBeaMenu项) {
  • @ActionLink(@item.SpecialWord,“ImportShow”,new{id=Model.LanguageName,menuID=item.id,articlegroupID=item.articlegroupID,counter=1},new AjaxOptions{updateTargetTargetId=“importPartUpdate”,HttpMethod=“GET”,InsertionMode=InsertionMode.Replace,OnComplete=“success”(++@item.id+”),new{{id=item.id})
  • } } }
功能成功(ids){ var nocache=new Date().getTime(); jQuery.ajax({ url:'@url.Action(“GridLanguageView”)/?menuID='+ids }).完成(功能(数据) { $(“.floatLanguage”).replacetwith(数据); 警报(数据); }); }
当您单击链接时,很可能正在提供缓存数据。在单击ActionLink时,我尝试在jquery对话框中加载部分视图内容时遇到了类似的问题

我所要做的就是将
Date().getTime()
作为Url参数发送,以始终请求新数据<代码>缓存:false在此处不起作用。试试下面的方法

function success(ids) {
   var date = new Date();
       $.ajax({
            url: '@Url.Action("GridLanguageView")/?menuID='+ids '&'  + date.getTime()
       }).done(function (data)
       {
         $(".floatLanguage").replaceWith(data);
          alert(data);
       });
   }

我看到您从
var nocache=new Date().getTime()开始但我看不出您在任何地方都在使用它。

是否每次单击“操作链接”时都会调用success()方法?是的,这是一个每次调用的方法。我认为“.floatLanguage”选择器有问题。在第一次用数据替换之后,您是否仍然拥有“.floatLanguage”类的控件?。replaceWith将替换整个DOM元素本身,而不是内容。如果我说$(“.floatLanguage”).html(数据)-问题是,数据是否对类名具有控制权?