增加阅读文章的次数

时间:2013-11-10 09:32:27

标签: javascript jquery

我有一种情况需要增加阅读文章的时间。 一旦某人打开文章,它应该通过将读取次数增加一来反映在数据库中。简单。

向服务器发送POST请求会将读取次数增加1。有问题的文章是通过URL参数提供的。

通过在浏览器中键入URL手动执行此操作可按预期工作。所以服务器端没有错。

我的问题始于它的javascript方面或者更确切地说是jquery。我将事件挂钩到文章链接。因此,每次用户点击文章链接时,它都会增加读取次数,如下所示:

$('#list-articles .article-link').click(function(e){
  var oid = $(this).parent().parent().attr('data-oid').toString(); //Get the article id
  $.post( "/articles/viewed/" + oid );
});

现在这不起作用!数量没有增加。

我不会阻止默认操作,因为我需要实际打开并显示文章的链接。

现在如果我在帖子之后发出警告,就像这样:

$('#list-articles .article-link').click(function(e){
  var oid = $(this).parent().parent().attr('data-oid').toString(); //Get the article id
  $.post( "/articles/viewed/" + oid );
  alert(oid);
});

此变体有效。在我关闭警报窗口后,该数字会递增。为什么会这样?如何在没有警报事件的情况下将其修复为实际工作?

更新

感谢您帮助解决此问题。所有答案都很棒并且有所帮助。到目前为止唯一有效的变种是在ajax调用上禁用异步。如果有人可以详细说明为什么在ajax中关闭异步模式来修复它会很棒。那么原始的帖子请求从未执行过?如果我只是过早检查并且在页面加载时数量增加不可见,那么它应该在下一页重新加载时仍然可见,对吗?它根本没有在数据库上更新我认为帖子根本没有运行。为什么会这样?我想了解这个问题所以我不会再遇到这个问题。感谢。

2 个答案:

答案 0 :(得分:1)

您的问题可能是由于$.post异步,您过早检查并尝试同步发布:

$.ajax({
    type: 'POST',
    url: "/articles/viewed/" + oid,
    async:false
});

答案 1 :(得分:0)

防止默认。等待服务器的响应,说文章读取增加1成功,然后重定向到文章。

如果它适用于警报,则听起来像是竞争条件。

相关问题