【问题标题】:How to save users data to the database while still displaying their input to the screen如何在屏幕上显示用户输入的同时将用户数据保存到数据库
【发布时间】:2019-06-27 23:22:12
【问题描述】:

在我的 js 文件中,我有一个在屏幕上显示用户数据的函数,但由于某种原因,这会阻止将数据保存到数据库中。我想要两者都有,所以没有 js 文件,它将它保存到数据库中。

编辑:我基本上想要做的是将客户端输入的内容永久上传到屏幕上,以便其他客户端能够在将其保存到数据库的同时看到所有内容。但我的问题是我的 js 脚本阻止将客户端内容保存到数据库中。我是 Angular 的新手,但如果有人可以提供使用 $http.post 的示例,如果这对我的要求有所帮助,我将不胜感激。

编辑:我有点发现了我的问题,但我还没有完全解决它。来自按钮元素的 ng-click 阻止了客户端数据保存到数据库,但现在启用提交后的按钮,导致提交许多表单。我该如何处理?我对这个网站还很陌生,所以这会改变我的问题吗?

HTML

<form action="/blog" method="POST">
    <div id="textarea-format-structure">
        <textarea name="dummyInfo" id="blogVal" ng-model="textAreaValue" 
         ng-change="textChange()" ng-focus="btnChange = true" />
    </div> 
  <button ng-disabled="btnChange" ng-click="btnChange = true"  class="btnpost">Post</button>
</form> 
<div id="my-posts-blog"></div>

JS

 function postVal() {
     var blogVal = document.getElementById("blogVal");
     var appendVal = document.getElementById("my-posts-blog");
     var create_div = document.createElement("div");

     create_div.textContent = blogVal.value;
     create_div.classList.add("post");
     appendVal.prepend(create_div);

     blogVal.value = "";
  }
      document.getElementById("blogVal").focus();
      var postIt = document.querySelector(".btnpost");
         postIt.addEventListener("click", postVal, false);

NODE.JS

router.post("/blog", (req, res) => { 
       mongo.connect(url, { useNewUrlParser: true }, (err, client) => { 
        var db = client.db("test");
        db.collection("collect").insertOne({ myBlog: req.body.dummyInfo});
   });
 });

【问题讨论】:

  • 在问题中添加 angularJS 标签。
  • 听起来您想要做的是将表单数据提交到服务器,以便可以保存它而不会导致页面重新加载。这个对吗?如果是这样,那么您需要使用的工具是“Ajax”,它是“异步 JavaScript”的缩写。您可以在各处找到 Ajax 表单提交的示例,例如 here
  • Sergio 您不能只编辑为“问题已解决”。根据知识共享许可,您不得破坏您现在属于 StackOverflow 站点的问题。乔希重新编辑了形状。我已经暂时锁定了。请,如果您必须编辑,请谨慎操作。

标签: javascript html node.js angularjs mongodb


【解决方案1】:

如果您使用的是 angularjs,那么为什么不使用 $http.post 呢?

  • 因此,在 ng-click 上,您可以在该函数集中进行函数调用 无论你想设置什么变量,准备好要传递的数据 并使用 $http.post 在后端调用 参数。它不会刷新您的屏幕。

【讨论】:

    猜你喜欢
    • 2014-06-22
    • 1970-01-01
    • 2020-09-20
    • 2017-05-21
    • 2015-04-25
    • 2021-01-29
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    相关资源
    最近更新 更多