[英]How to load the data without clicking on the link?
我正在开发MVC应用程序。 我正在尝试开发一个评论框。
我已经写了一个代码,在这个代码中,我已经写了一个过程,当用户点击Show Comment链接时,注释就会出现。
现在,我想更改功能,而无需单击show Comments按钮,应该加载所有评论。
我正在尝试这样做,但是没有用。
显示评论链接代码
<div class="span12" style="margin-left:0px; margin-top:50px;">
<span style="font-size:16px;">
@Ajax.ActionLink("Show Comments", null, null, null, new { id = Model.Id, @class = "addremark" })
<div class="RemarkBox"></div>
<span class="CommentAdd"></span>
</div>
我想在页面加载时加载评论,我希望在加载页面时显示评论加载,但是我仍然想单击Show Comment链接。
$(document).ready(function () {
$('a.addremark').click(addremarkClick);
// Call on load also
addremarkClick();
});
function addremarkClick(event)
{
var url = '@Html.Raw(Url.Action("ShowCommentBox", "Comment", new { Id = "idValue", EntityType = "Payment" }))';
if (typeof event !== 'undefined') url = url.replace("idValue", event.target.id);
else url = url.replace("idValue", $('a.addremark')[0].id);
$('.RemarkBox').load(url);
$(this).closest('div').find('div.RemarkBox').show();
return false;
}
function addremarkClick()
{
alert("Clciked");
var url = '@Html.Raw(Url.Action("ShowCommentBox", "Comment", new { Id = "idValue", EntityType = "Payment" }))';
if (typeof event !== 'undefined') url = url.replace("idValue", event.target.id);
else url = url.replace("idValue", $('a.addremark')[0].id);
$('.RemarkBox').load(url);
$(this).closest('div').find('div.RemarkBox').show();
return false;
}
最好的方法是先加载页面,然后使用js,获得可用的显示评论链接列表$('a.addremark')
,然后触发触发事件,而不是触发click事件,可以遍历集合,然后进行AJAX调用,以便在运行时加载注释,而无需用户单击链接。
同样,使用SetTimeOut
javascript调用在特定的持续时间后刷新页面上的注释将很有用,因此用户也不必刷新页面或单击链接来查看更新的注释。 您会看到Stackoverflow中使用的类似方法,突然要求我单击以重新加载帖子以查看编辑。 因此它将提供更好的可用性。
编辑
以下是可能的步骤
页面加载完成后,在文档准备就绪后,调用javascript方法,该方法找到所有与该类一样为
addremark
的链接。对于每个链接元素,您将与之关联要获取评论的帖子ID。
使用postid进行AJAX调用,然后获取所有注释,然后在相应的div中对其进行更新。
可以将上述方法传递给javascript方法的setInterval参数。 这种方法请参考这里
在页面中插入以下js,请勿将其插入通用js。
<script>
window.setInterval(function(){
addremarkClick();
}, 600000);// run this after every minute
</script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.