当前位置: 首页 > 知识库问答 >
问题:

通过使用JavaScript点击Javaendpoint添加到mongoDB

姬和歌
2023-03-14

如果你们能回答这个问题,我会印象深刻的。基本上,我正在开发一个全堆栈的web应用程序,它包含以下三个组件:

  1. MongoDB文章集
  2. 用Java 8编写的后端
  3. Javascript前端

程序流程应如下所示:

  1. 用户打开网页将文本输入到指定标题、作者、流派和内容的表单中。
  2. 当他们单击“addItem”按钮时,它应该将数据序列化为原始JSON并将其发送到我的addItemendpoint。
  3. 然后数据被清理,它应该将这篇文章提交到数据库中。

我遇到了多个问题。它们如下:

>

  • 当我单击submit按钮时,Javascript会不断刷新页面,即使我有$(文档)。在(“submit”,“#add Article”,函数(e){e.preventDefault();} (请参阅下面的相关代码)。

    它看起来根本没有达到终点。

    数据库中未保存任何内容

    以下是我知道有效的方法,以下是我尝试过的方法:

    >

  • 我已经通过Postman对此进行了测试,并且能够成功地添加到文章集合中。

    我设法在main的开头发出警报。js,所以我知道它连接到javascript。

    在做了大量的研究之后,我发现我可以直接使用JavaScript来做一些类似文章的事情。保存前端。问题是,我希望数据进入Java,以便对其进行清理,从而增加ObjectId。

    这是相关代码

    类型

    <form id="add-article">
    			<input type="text" id="title"/>
    			<label for="title">Title </label>
    			<input type="text" id="authors"/>
    			<label for="authors">Author(s) </label>
    			<input type="text" id="genre"/>
    			<label for="genre">Genre </label>
    			<input type="text" id="content"/>
    			<label for="content">Content </label>
    			<button id="addArticle">Submit Article for Peer Review</button>
    		</form>

    Javascript

    alert('JS is linked to page!');
    
    function Article(Id = 1, Title = "", Authors="", Content = "", Genre = "", Date = 1497484623) {
       	console.log("JavaScript file loaded successfully");
        var self = this;
        self.Id = Id;
        self.Title = Title;
        self.Authors = Authors;
        self.Content = Content;
        self.Genre = Genre;
        self.Date = Date;
        self.Save = function() {
            var settings = {
                url: 'localhost:8080/articles/addArticle/',
                method: 'POST'
            };
            var myData = {
                "Title": self.Title,
                "Authors": self.Authors,
                "Content": self.Content,
                "Genre": self.Genre,
                "Date": self.Date
            };
            settings.data = myData;
     
            $.ajax(settings).done(function(Article) {
             var myArticle = new Article(Article.Id, Article.Title, Article.Authors,
                    Article.Content, Article.Genre, Article.Date);
                CreateSuccessRow(myArticle);
            });
        };
    }
    
        $(document).on("submit", "#add-Article", function(e) {
            e.preventDefault();
                alert('submit Activated');
            var title, authors, genre, content;
            title = $("#title").val();
            director = $("#authors").val();
            rating = $("#genre").val();
            notes = $("#content").val();
            var myArticle = new Article(title, authors, genre, content);
            alert(myArticle.title);
            addArticle(myArticle);
            //$("#add-article")[0].reset();
            $("#title").focus();
     
        });
    
    function addArticle(Article) {
        alert('addArticle Activated');
        var settings = {
            url: 'localhost:8080/articles/addArticle',
            method: 'POST'
        };
        var myArticle = {		
    		"Title": Article.Title,     
    		"Authors" : Article.Authors,
    		"Content": Article.Content,
    		"Genre" : Article.Genre,
    		"Date": 1497484623 
        };
        settings.data = myArticle;
     
        $.ajax(settings).done(function(Article) {
            var myArticle = new Article(Article.Title, Article.Authors, Article.Content,
                Article.Genre, Date);
    		//CreateArticleRow(myArticle);
            console.log("Article Created");
        });
    }

    控制器终结点

    `@RestController
    

    @请求映射(“/文章”)公共类ArticleController{

    private ArticleRepo articleRepo;
    
    @Autowired
    public ArticleController(ArticleRepo articleRepo) {
        this.articleRepo = articleRepo;
    }
    
    @RequestMapping(value = "/addArticle", method = RequestMethod.POST)
    @ResponseBody
    public Article addArticle(@RequestBody Article newArticle) {
    //sanitizing happens here
        articleRepo.save(newArticle);
        return newArticle;
    }
    

    }`

    我已经为同一个问题困扰了一天多了,如果有人能帮助我,我将不胜感激。我假设Javascript有问题。


  • 共有1个答案

    姜玉泽
    2023-03-14

    jquery选择器与html代码不匹配(添加文章而不是添加rticle)。jquery选择器似乎区分大小写

        $(document).on("submit", "#add-article", function(e) {
        e.preventDefault();
            alert('submit Activated');
        var title, authors, genre, content;
        title = $("#title").val();
        director = $("#authors").val();
        rating = $("#genre").val();
        notes = $("#content").val();
        var myArticle = new Article(title, authors, genre, content);
        alert(myArticle.title);
        addArticle(myArticle);
        //$("#add-article")[0].reset();
        $("#title").focus();
    
    });
    
     类似资料:
    • 我试图创建一个小的GUI,它有2个JButtons和2个JPanels,每个JPanels上都有一些绘图动画。默认情况下,它必须显示第一个JPanel,通过单击第二个JButton我想看到第二个JPanel。所以:我创建了JFrame、Panel1和Panel2,在这里我绘制了我的动画,创建了Button1和Button2,并向它们添加了ActionListeners。我还有一个MainPanel

    • 问题内容: 我想将点击事件添加到中。我使用了这个例子,并得到了: 但是不幸的是没有任何反应。当我用另一个元素(例如按钮)测试它时,它可以工作: 问题答案: 您可以将点击附加到iframe内容: 注意:这仅在两个页面位于同一域中时才有效。

    • 问题内容: 是否可以使用给定的坐标来模拟网页中JavaScript的点击? 问题答案: 您可以调度 点击 事件,尽管这与实际点击不同。例如,它不能用于欺骗跨域iframe文档以使其被点击。 所有现代浏览器都支持和,因为至少IE 6,火狐5,Chrome浏览器和Safari的你很可能任何版本可能任何版本的关心。它甚至会点击链接并提交表格:

    • 问题内容: 我正在尝试通过Selenium进行网络抓取。我的问题很简单:如何找到链接,然后如何单击它?例如:以下是我要网页抓取的HTML: 因此,如您所见,“详细信息”是一个链接。 如何使用Selenium找到该链接并单击它? 问题答案: 您可以使用: 例如: 要单击它,只需调用click方法:

    • 我需要在XML中保留很少的值,并且需要通过XSLT添加新的节点。 价值需要保留,新的选项需要添加。 如何实现这一点。下面是我的代码。 有人能帮忙吗? 谢谢

    • 问题内容: 按照标题,在Jenkins中,如何使用CLI将新的从属节点添加到构建集群中,或者如果没有CLI选项,是否可以使用另一种脚本化方法? 问题答案: 许多人使用Swarm插件来消除实际手动添加从站的需要。当然,您将需要编写swarm代理的安装脚本,但这应该很简单。