带有rails的入门级javascript:更新表单提交上的div(3.1 / jquery)

我有一个基本页面,包含一个包含文本的div,以及一个用于更新该文本的表单,在rails 3.1 / jquery上。 我不知道jquery或js好,所以我只是在讨论控制器的coffeescript。

我发现的任何教程都没有相关性,而且我发现的很少是古老的。 我可以看到发生了什么,有点:我可以获得关于ajax成功的js警报,对于作为远程表单的表单(放入服务器并且控制器上的更新工作 – 基本文本被更改,但是我需要刷新页面才能看到更改)。

所以我有2个基本问题我正在解决:

  • 我是否需要摆弄js partials或者我可以将它放入页面的js / coffeescript中吗? 看起来像这样可以处理没有一堆杂乱的部分。

  • 你是如何用js / jquery控制替换信息的:.html,.load和其他几个函数似乎有牵连,但我找不到合适的组合。

我发现的所有教程要么过于陈旧,要么过于冗长,以至于无法在rails中执行一些基本的jquery操作。 我正努力用js / json削减和加快表单提交。 对于没有经验的人来说,一个新的,清晰的,简单的教程会很棒,但任何指向正确学习方向的东西都会很棒。

是的,我还没有发布任何代码,但如果我可以这么做,我会发布。

如果你有关于ajax成功的alert() ,请执行以下操作:

 $("#myDivId").text(myText); 

myText是您提交给服务器的文本,或者来自服务器的响应 – 最适合您的情况。

更一般地说,要替换元素的文本,请使用$("#myElementId").text("new text") 。 要替换元素的HTML,请使用$("#myElementId").html("new HTML")

我不知道Ruby,但使用jQuery很容易处理。

在AJAX调用返回成功后,您可以执行AJAX表单提交并更新

元素。

 //bind some code to the submit event for your form $('#form_id').bind('submit', function (event) { //preventDefault(); is the same as return false; except you can run code after preventDefault(); event.preventDefault(); //make a GET request to your server-side script $.get('path/to/form_action.rb', $(this).serialize(), function (response) { //this is the callback for the AJAX call $('#div_id').html('This is my new fancy text'); }); }); 

一些说明:

  • 您还可以使用$.post()http://api.jquery.com/jquery.post/ )方法而不是$.get()http://api.jquery.com/jquery.get/ )并使用POST方法发送数据。
  • event.preventDefault(); 将阻止表单正常提交,以便您可以使用自己的代码处理提交。
  • AJAX回调中的response变量是ruby脚本在处理表单提交后输出的响应。
  • $(this).serialize() $.get()调用中的$(this).serialize()将表单输入数据添加到AJAX调用中: http : //api.jquery.com/serialize/