提交表单而无需通过AJAX重新加载页面

时间:2012-08-09 11:31:17

标签: javascript jquery ruby-on-rails ruby ajax

有没有办法在不重新加载页面的情况下将表单提交给服务器以获取AJAX响应。我可以使用提交按钮执行此操作。但是,如果点击链接,我该怎么做呢。

我开始了解一个javascript方法,

var form = document.getElementById('myForm');
form.submit();

但上面的代码会重新加载页面。我开始知道我们可以用jquery做到这一点但是怎么做?

请注意,我正在使用Ruby on Rails 3.0.4开发我的应用程序,我正在使用这样的rails AJAX。

<%= form_for @search, :remote => true, :url => request_path, :html => {:method => :get, :id => :my_form} do |f| %>

任何帮助都将不胜感激。

5 个答案:

答案 0 :(得分:10)

您可以使用event对象的preventDefault()方法:

$('#myForm').submit(function(event){
   event.preventDefault(); 
   $.ajax({
     ...
   });
})
  

如果调用此方法,则不会触发事件的默认操作。

答案 1 :(得分:3)

您可以使用.post()来发布ajax帖子。

取自文件:

$.ajax({
  type: 'POST',
  url: url,
  data: data,
  success: success,
  dataType: dataType
});

您也可以使用.submit()

取自文件:

$('#target').submit(function() {
  alert('Handler for .submit() called.');
  return false;
});
  

现在提交表单时,会提示消息。有时候是这样的   在实际提交之前,我们可以取消提交操作   在事件对象上调用.preventDefault()或返回false   来自我们的经纪人。

您可以将Raminson

显示为2
$('#target').submit(function() {
    .preventDefault()
    $.ajax({
        type: 'POST',
        url: url,
        data: data,
        success: success,
        dataType: dataType
    });
});

答案 2 :(得分:2)

我知道我参加聚会有点晚了,作为上述导师的替代方案,您可以使用jQuery Form plugin轻松更新ajax。

如果您使用它,最简单的JS代码版本将如下所示。

$('#myform').ajaxForm(function() { 
  success: alert('success');
});

您可以使用更多选项来配置它的喜好。 表单提交的网址与表单的action属性相同。

这也可以改变。

从我的熟悉程度来看,您不需要preventDefault()提交,它也适合您。

无论如何,如果您觉得方便的话,这是您问题的另一种选择。

答案 3 :(得分:1)

如果问题是您的页面使用form.submit()重新加载,请尝试:

var form = document.getElementById('myForm');
form.submit(function(e){

    e.preventDefault();

    //an ajax post as in François Wahl answer

});

答案 4 :(得分:-1)

我只是使用这段代码就可以了。无需在提交内定义函数。

$('#myform').submit();