javascript - 如何仅在特定事件后加载服务器变量?

标签 javascript jquery node.js

我只需要在数据库中的 var 更改后加载这两个服务器变量。

现在,它们会在页面加载时立即加载,因此会保留事件发生前的值 (upvotesRef.transaction)。

 $('.HP').text("<%= post.upvotes - post.downvotes %> HP");

代码:

$('.UpvoteButton').click(function () {


        var $this = $(this);
        if ($this.hasClass("on")) {
            $this.removeClass("on");
            upvotesRef.transaction(function (upvotes) {  
               if (!upvotes) { 
                  upvotes = 0; 
               } 
                 upvotes = upvotes - 1; 
                 return upvotes; 
            }); 
            userRef.remove();
            $('.HP').text("<%= post.upvotes - post.downvotes %> HP");

编辑:

我最终创建了局部变量来解决我的问题。谢谢您的回答!

var upvotesLocal = <%= post.upvotes %>;
var downvotesLocal = <%= post.downvotes %>;

$('.UpvoteButton').click(function () {


        var $this = $(this);
        if ($this.hasClass("on")) {
            $this.removeClass("on");
            upvotesRef.transaction(function (upvotes) {  
               if (!upvotes) { 
                  upvotes = 0; 
               } 
                 upvotes = upvotes - 1; 
                 return upvotes; 
            }); 
            upvotesLocal = upvotesLocal -1
            userRef.remove();
            $('.HP').text((upvotesLocal - downvotesLocal) + " HP")

最佳答案

您应该在交易后获取并更新变量吗?
这意味着它应该在您的回调中发生。
我假设您使用的是 firebase交易方式。
那么你的回调应该作为第二个参数:

$('.UpvoteButton').click(function () {


        var $this = $(this);
        if ($this.hasClass("on")) {
            $this.removeClass("on");
            upvotesRef.transaction(function (upvotes) {  
               if (!upvotes) { 
                  upvotes = 0; 
               } 
                 upvotes = upvotes - 1; 
                 return upvotes; 
            }, updateVotes); //<-- here the callback function added
            userRef.remove();

function updateVotes(error, isCommitted, upvotes) {
   //here you got already your new upvotes
   //but you should request the downvotes,
   //here you need the ajax request, see e.g. Dez's answer or comments
}

关于javascript - 如何仅在特定事件后加载服务器变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40444781/

相关文章:

javascript - 用平均值填充数组

node.js - 我应该在哪里定义要在 EJS 模板中调用的 JS 函数

mysql - POST 请求返回 422(无法处理的实体)

javascript - 在 Javascript 中,如果有一个对象有很多函数属性,你如何将它们转换为字符串数组(函数名称)?

javascript - 如何使用 Javascript Replace() 替换文本中的单词(如果它们属于数组)

jQuery 网格遍历方法

Javascript:在一行字符串中获取正文 html。如何删除换行符?

node.js - Bluebird 警告 "A promise was created in a handler but was not returned from it"

javascript - 当元素在 jquery 中使用 .fadetoggle() 可见时,如何对其进行 .focus() ?

javascript - 使用 Redux 容器组件模式渲染动态数量的 React 子组件的稳健方法是什么?