Rails 关于 Rails 中的 Ajax 的疑问

douya0808 · 2012年04月17日 · 最后由 douya0808 回复于 2012年04月18日 · 3714 次阅读
class AjaxesController < ApplicationController
def index
  @teacher=Teacher.find(1);
  @teacher_name=@teacher.name
end
def ajax
end
end



我在 ajax.html.erb 中定义 div 标签

<div id="name"></div>



之后我在 ajax.html.erb 中请求 index 这个 action 就可以把,我的 index 里有的@变量就可以写到 ajax.html.erb 中的 div 标签中了吗?例:

xmlRequest.open("GET", "http://localhost:3000/ajaxes/index");


我是这么想的呢但不知道对不对,希望我的思路么有错:)

今天照着书上试验了下 ajax 但是不知道是什么原来 就是把被请求到的那个 action 里的变量共享了吗?

#1 楼 @douya0808 这种想法不对。建议楼主先了解 ajax 是什么(http://www.w3school.com.cn/ajax/ ),再学一下 ajax 在 rails 中的应用(http://rubyer.me/blog/999/

@zhaoguobin 前辈你好 ajax 也不是完全不会 但以前只用 java 写过注册的异步验证 但是换到 ror 里我倒糊涂了-_-

@zhaoguobin 刚才在听一个博导的报告会用手机上的 算是白听了 人家的搞机器翻译的 我没弄明白就去听了 还不如回来敲遍前辈发的例子 嘿嘿

两个请求,这些 instance variable 肯定是不能共享的 不知道为什么需要另一个 ajax 请求

楼主你好,rails 框架并非 EJB,不支持类似 RPC 的方式传输和调用变量,rails 是一个轻量框架,并且通过 http 传输的内容都是文本,如果你想通过 ajax 传变量,可以使用 JSON 的方式进行序列化。然后在客户端进行解析. 另外,我觉得楼主似乎应该深入理解一下 rails 的基本 pattern 以及 restful 方式,AWDWR 那本书上有详细解说,也可以参照 rails 的 guide http://guides.rubyonrails.org/ajax_on_rails.html

@douya0808 一个简单的实现,希望可以给你一点参考


$.fn.sync = function(url){
  class_or_id = "#"; 
   $.getJSON(url, function(resp){
      for (key in resp){
         var value = resp[key];
         $(this).find(class_or_id + key).text(value);
      }
   });
}

// 类似这样调用一下
$("#teacher").sync("ajaxes/index");




感谢赐教 我去研究一下:) 吼吼

我用 JQuery 还是不行 用 chrome 总提示 Uncaught ReferenceError: $ is not defined 下了个 jQuery 的库放进项目还是不行 我的环境是 Rails 3.1.1 不知道为什么不支持 jQuery

但是纯 javascript 实现的 ajax 倒是可以实现功能

各个版本变化真大 网上说还有用 prototype 的 -.-

好吧 服了 <%= javascript_include_tag "jquery.min.js" %> <%= javascript_include_tag "time.js" %> jquery.min.js 的加载要写在自己的 js 的前面 不然不认识 jQuery 不是说 3.X 开始支持 jQuery 了么 哎呀 支持的不到位啊 我还得自己下库 自己导-.-

要 include application,application.js 里面要 require jquery

@Rei 师傅:) 这样做也只是省去了加载 jquery 但是 jquery 的库 3.1.1 自身是不带的吗?

#12 楼 @douya0808 带的意思是预装,看 Gemfile

gem 'jquery-rails'

@Rei 谢师傅:)

好吧 我实践出 只要 application.js 中的//= require_jquery 这一行在 就可以应用上 jquery 无需导库也无需改名 都是默认自动的=。=我还自己改了一天多 我真二 .

需要 登录 后方可回复, 如果你还没有账号请 注册新账号