如何在不点击链接的情况下加载数据?

时间:2013-05-04 08:27:23

标签: javascript ajax asp.net-mvc

我正在开发一个MVC应用程序。 我正在尝试开发一个评论框。

我已经编写了一段代码,在这段代码中,我编写的过程就像, 当用户点击显示评论链接评论时,会出现。

现在,我想更改功能,不点击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>

我想在页面加载时加载评论,我希望在加载页面时通知显示加载,但我仍然想点击显示评论链接。

 $(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;
    }

2 个答案:

答案 0 :(得分:1)

最好的方法是首先加载页面然后使用js,获取可用的显示注释链接列表$('a.addremark'),然后不是触发click事件,而是可以遍历集合然后生成AJAX调用,以便在运行时加载注释,而无需用户单击链接。

此外,在特定的持续时间之后进行SetTimeOut javascript调用以刷新页面上的注释将非常有用,因此用户不必刷新页面或单击链接以查看更新的注释。您可以看到Stackoverflow中使用的类似方法突然要求我单击以重新加载帖子以查看编辑。所以它会提供更好的可用性。

修改

以下可以是步骤

  
      
  1. 页面加载完成后,文档准备就绪后,调用一个javascript方法,查找该类与addremark的所有链接。

  2.   
  3. 对于每个链接元素,您将与其关联为其提取评论的帖子ID

  4.   
  5. 使用postid进行AJAX调用,然后获取所有注释,然后在相应的div中更新它。

  6.   
  7. 上面的方法可以将参数传递给javascript方法的setInterval。有关此方法,请参阅here

  8.   

答案 1 :(得分:0)

在页面中插入以下js,不要将其插入常见的js。

<script>
       window.setInterval(function(){
          addremarkClick();
          }, 600000);// run this after every minute
</script>