1

在我的 Rails 视图中,我有一个 HTML 表单

<form name="input">
Username: <input type="text" name="user"> <br/>
<input type="button" id="submit_form" value="Submit">
</form> 

单击提交按钮时,我想使用 JQuery 调用控制器download,并传递user参数。(在routes.rb我指定match "download" => "Posts#download"

我应该如何使用 JQuery 来做到这一点?

$("#submit_form").click(function() {
  // what should I put here?
});
4

5 回答 5

2

你可以这样做:

/* attach a submit handler to the form */
  $("#submit_form").submit(function(event) {

    /* stop form from submitting normally */
    event.preventDefault(); 

    /* get some values from elements on the page: */
    var $form = $( this ),
        term = $form.find( 'input[name="user"]' ).val(),

    /* Send the data using post and fire some callback */
    $.post( "/download", { s: term },
      function( data ) {
       //some callback
      }
    );
  });

来源:来自 jQuery 文档的修改示例

于 2012-11-11T20:25:45.337 回答
0

If I understand correctly you are trying to submit the form through jQuery instead of the normal post process. I'd suggest using jQuery's form submit function

Basically you'll be looking for something like:

$("form").submit(function() {
  var data = $(this).serialize();
  $.ajax({
    url: "controller/action",
    type: "POST",
    data: data
    // plus anyother options you are wanting
  }).done(function() { 
    // a success function
  });
  return false;
  });

Hope that helps.

于 2012-11-11T20:29:31.630 回答
0
$("#submit_form").click(function() {
  // what should I put here?
  $('form[name="input"]').submit();
});

或者您可以使用 id="submit_form" 将 type="submit" 设置为您的输入,并且不设置任何处理程序

于 2012-11-11T20:22:18.180 回答
0

我不是 Rails 开发人员,但你不能把路由放在表单操作中,然后使用提交,如下所示:

<form name="input" action="/Download">

$("#submit_form").click(function() {
  $("#input").submit();
});
于 2012-11-11T20:23:26.073 回答
0

jQuery 提供了一个 .submit() http://api.jquery.com/submit/

您不需要绑定到输入按钮的单击方法,因为该提交按钮已经知道提交表单。

你正在寻找的是

$("form[name='input']").submit(function(){
  //do something before function gets submitted
});

在该函数中,您需要对服务器进行 ajax 调用并使用 preventDefault 取消表单的原始提交。

于 2012-11-11T20:24:52.077 回答