繁体   English   中英

如何在不带Ajax的流星中提交带有post方法的表单?

[英]How do I submit a form with a post method in meteor without ajax?

我对流星的理解是表单提交不需要ajax,但是我想知道如何处理Template.form.event提交表单事件并在javascript中进行POST其余提交,因此页面不会继续到达操作目标它只是发送数据并停留在页面上。 我如何在没有ajax的javascript中进行POST。 我认为有一个明显的答案,就是似乎无法想到。 我需要安装休息包吗?

我不希望表单动作被运行,而是传递到javascript中并通过POST发送,而不刷新METEOR中的页面。

这是表格

<form accept-charset="UTF-8" action="https://formkeep.com/f/randomnumbers" method="POST" id="contact-form">
  <input type="hidden" name="utf8" value="✓">

  <input type="text" placeholder="Name">


  <input type="phone" placeholder="Phone Number">


  <input type="email" placeholder="Your Email">

  </form>

假设您不需要使用AJAX来执行表单请求提交是正确的,则应该使用Meteor方法,而应使用Meteor DDP协议。

首先,定义您的Meteor方法以执行所需的操作,下面是一个示例:

Meteor.methods({
  addContact: function(contact){
    check(contact, {
      name: String,
      phoneNumber: String,
      email: String
    });
    //
    return Contacts.insert(contact);
  }
});

在检查参数格式正确后,此方法只是将联系人添加到集合中。

接下来,您需要在表单提交事件处理程序中调用此方法,如下所示:

Template.myForm.events({
  "submit": function(event, template){
    // prevent default form submission handler : which is
    // performing an HTTP POST request that will reload the page
    event.preventDefault();
    // construct the contact object that will be passed to the method
    var contact = {
      // assuming each input fields have ids attribute
      name: template.$("#name").val(),
      phoneNumber: template.$("#phoneNumber").val(),
      email: template.$("#email").val(),
    };
    // perform the server-side asynchronous call
    Meteor.call("addContact",contact);
  }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM