Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在没有ajax的meteor中,如何使用post方法提交表单?_Javascript_Forms_Post_Meteor - Fatal编程技术网

Javascript 在没有ajax的meteor中,如何使用post方法提交表单?

Javascript 在没有ajax的meteor中,如何使用post方法提交表单?,javascript,forms,post,meteor,Javascript,Forms,Post,Meteor,我对meteor的理解是,表单提交不需要ajax,但是我想知道如何处理Template.form.event提交表单事件,并在javascript中进行POST rest提交,这样页面就不会继续发送到动作目的地,而只是发送数据并停留在页面上。在没有ajax的情况下,如何在javascript中发布帖子。我想有一个明显的答案,只是我似乎想不起来。我需要安装rest软件包吗 我不想运行表单操作,而是将其传递到javascript并通过POST发送,而不用在METEOR中刷新页面 这是表格 <f

我对meteor的理解是,表单提交不需要ajax,但是我想知道如何处理
Template.form.event
提交表单事件,并在javascript中进行POST rest提交,这样页面就不会继续发送到动作目的地,而只是发送数据并停留在页面上。在没有ajax的情况下,如何在javascript中发布帖子。我想有一个明显的答案,只是我似乎想不起来。我需要安装rest软件包吗

我不想运行表单操作,而是将其传递到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 DDP协议,使用Meteor方法

首先,定义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);
  }
});

嗯,如果你不能使用Ajax,那么你可以发布到一个新窗口或一个隐藏的iframe。我可以使用Ajax,我只是假设Meteor不需要Ajax.catch事件,而不是Ajax,使用Meteor.methods?因为它不需要,所以你可以阻止表单加载,就像这个“点击表单”:函数(e){e.preventDefault();}你有很多关于如何通过meteor从html中获取数据的教程