我有一个onclick函数,它基本上只返回如下的排序数据:
$(document).ready(function () {
$(".feedbackClick").click(function () {
$.post("/Analyze/GetSortedByFeedback")
.done(function (data) {
var sellers = $('<table />').append(data).find('#tableSellers').html();
$('#tableSellers').html(sellers);
});
});
});
});
这就是我在jquery帖子之后尝试更新表格的样子:
<table id="tableSellers" class="table table-striped jambo_table bulk_action">
<thead>
<tr class="headings">
<th class="column-title"><h4><i class="fa fa-user" style="text-align:center"></i> <span>Username</span></h4> </th>
<th class="column-title"> <h4><span class="glyphicon glyphicon-tasks salesClick" aria-hidden="true"></span></h4></th>
<th class="column-title"><h4><i class="fa fa-star feedbackClick"></i></h4></th>
</tr>
</thead>
<tbody>
@foreach (var item in ViewBag.rezultati)
{
<tr>
<td><a href="http://ebay.com/usr/@item.StoreName" target="_blank">@item.StoreName</a></td>
<td>
<b>
@item.SaleNumber
</b>
</td>
<td><b>@item.Feedback</b></td>
</tr>
}
</tbody>
</table>
点击基本上只是获取结果并更新HTMl中的表...
有人可以帮帮我吗?
编辑:
这种当前的方法不起作用......我触发事件但没有任何反应...... Action中的代码被正确调用,但结果没有显示......
编辑2:
这是.done:
之后的数据对象的内容System.Collections.Generic.List`1[WebApplication2.Controllers.ResultItem]
编辑3:
这是行动:
public List<ResultItem> GetSortedByFeedback()
{
return lista.OrderByDescending(x => x.Feedback).ToList();
}
Edit4这是Alexandru的帖子之后的数据:
Array[100]
现在我能做到:
data[0].Feedback
这在控制台中输出:
61259
答案 0 :(得分:1)
您要做的是将JSON数据附加到HTML元素,这当然不会按预期工作。
考虑使用jQuery Templates之类的模板引擎。您将能够编译HTML模板,并在需要时使用它来呈现数据。例如:
{
"compilerOptions": {
"module": "system",
"target": "es5",
//..
答案 1 :(得分:1)
尝试这样的事情:
$(document).ready(function () {
$("body").on("click",".feedbackClick",function() {//delegate the click event
$.get("/Analyze/GetSortedByFeedback",function(data) {
var sellers = $(data).find('#tableSellers').html();//find the table and take the html
$('#tableSellers').html(sellers);//append the html
});
});
});
注意:您需要从ajaxed页面返回html(在您的情况下)
来自@Alexandru部分回复您可以执行以下操作
public JsonResult GetSortedByFeedback()
{
var list=lista.OrderByDescending(x => x.Feedback).ToList();
return Json(list,JsonRequestBehavior.AllowGet);
}
JS:
$(document).ready(function () {
$("body").on("click",".feedbackClick",function() {//delegate the click event
$.get("/Analyze/GetSortedByFeedback",function(data) {
$('#tableSellers tbody').empty();//empty the table body first
$.each(data,function(i,item){//loop each item from the json
$('#tableSellers tbody').append('<tr><td><a href="http://ebay.com/usr/'+item.StoreName+'" target="_blank">'+item.StoreName+'</a></td><td><b>'+item.SaleNumber+'</b></td><td><b>'+item.Feedback+'</b></td></tr>');//build and append the html
});
});
});
});
答案 2 :(得分:1)
请使用此:
public JsonResult GetSortedByFeedback()
{
var list=lista.OrderByDescending(x => x.Feedback).ToList();
return Json(list);
}
如果您的方法为GET
,请使用此方法:
public JsonResult GetSortedByFeedback()
{
var list=lista.OrderByDescending(x => x.Feedback).ToList();
return Json(list,JsonRequestBehavior.AllowGet);
}
然后请用这个:
.done(function (data) {
$('#tableSellers tbody').empty();
$.each(data,function(i,item){
var tr='<tr><td><a href="http://ebay.com/usr/'+item.StoreName+'" target="_blank">'+item.StoreName+'</a></td><td><b>'+item.SaleNumber+'</b></td><td><b>'+item.Feedback+'</b></td></tr>';
$('#tableSellers tbody').append(tr);//append the row
});
});