2016-07-03 64 views
0

最近我遇到了困惑的proplem。從控制器(jquery ajax)獲取數據時向表中追加數據兩次

我想延遲加載根據波紋管鏈接: ASP.NET MVC Infinite Scrolling Jquery

運行項目和使用的功能,實現時。一切工作正常,但jquery沒有。 其追加我的數據的兩個時間看到圖片: pay attention to first field which is a number

每一件事情是確定的(螢火蟲說明正確的數據) 但什麼是發生在那裏。

我jQuery代碼是:

var page = 1; 
 
var scrollHandler = function() { 
 
    if (($(window).scrollTop() == $(document).height() - $(window).height())) 
 
     loadMoreToInfiniteScrollTable(); 
 

 
} 
 

 
function loadMoreToInfiniteScrollTable() { 
 
    page++; 
 
    $.ajax({ 
 
     type: 'GET', 
 
     url: dataUrl, 
 
     data: "p=" + page, 
 
     success: function (data) { 
 
      if (data) { 
 
       $('tbody').append(data); 
 
       
 
     } 
 
     } 
 
    }); 
 
    
 
}

調用方法

<script type="text/javascript"> 
 
     var dataUrl = '@Url.RouteUrl("UserInfo")'; 
 
     $(window).scroll(scrollHandler); 
 
    </script>

控制器操作方法:一次

其填入圖
public List<inf> lst; 
    public ActionResult ExpressionDetail() 
    { 
     var data = lst.Where(f=>f.id>0&&f.id<lenght).OrderBy(i=>i.id); 

     return View(data); 
    } 

和用於頁面的盲分離Blind局部視圖:

[HttpGet] 
    public ActionResult _TableData(int? p=0) 
    { 
     int firstfrom = p ?? 1; 
     int endfrom = (firstfrom > 1 ? (firstfrom - 1) * lenght : 0); 

     var g= lst.OrderBy(i=>i.id).Skip(endfrom-1).Take(lenght).AsEnumerable(); 

     return PartialView(g); 
    } 

路線配置:

routes.MapRoute("UserInfo", "",new {Controller= "Default", Action= "_TableData" }); 

常量長度:

public const int lenght = 15; 

partialview:

@model IEnumerable<testable.Models.inf> 

@foreach (var item in Model) { 
<tr> 
    <td> 
     @Html.DisplayFor(modelItem => item.id) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.name) 
    </td> 

</tr> 

}

和主要觀點:

@model IEnumerable<testable.Models.inf> 
<!DOCTYPE html> 

<html> 
<head> 
<meta name="viewport" content="width=device-width" /> 
<title>ExpressionDetail</title> 
</head> 
<body> 

<table class="table"> 
    <tr> 
     <th> 
      Id 
     </th> 
     <th> 
      name 
     </th> 
    </tr> 
@Html.Partial("_TableData", Model) 
    <tbody> 

    </tbody> 

</table> 

</body> 
</html> 

INF模型

public class inf 
{ 
    public int id { get; set; } 
    public string name { get; set; } 
} 
+1

顯示控制器方法的調用和視圖返回(和看吃了HTML的生成 - 最好的猜測是你有多個''元素 –

+0

是的,先生,即時通訊展控制器方法,我的調用是上面顯示的JavaScript的第二部分,我不是指多個tbody plz顯示我 – Persiax

+0

你還沒有向你展示局部視圖:)'lenght'(我認爲它的10?)的價值是什麼? –

回答

0

所要解決只能刪除TBODY我的一個問題,使後面產生的感覺2個TBODY因此通過避免<tbody></tbody>明確地解決了我們的問題並且正確地工作。 MR斯蒂芬·馬克的

TNX和祝賀