Ruby on Rails 开发学习笔记 二

这次比较注重开发网站前端的经验,涉及rails与js之间消息传递,ajax等


1. rails与js间 结构传递

1.1 一般的对象传递,例如:

<script type="text/javascript“>
var content = <%= @result_from_rails %>

这种得到的结果通常为encode过的html,比如<显示为&lg

要想获得原始字符,stackoverflow上有过一个很好的解答:

var content = $("textarea").html( <%= @result_from_rails %>.text()

当然,html上可以完全没有textarea


1.2 Json对象的传递

开发时候遇到的麻烦:A为在rails 函数中需要返回的一个有结构的对象, puts A 可以看到一个清晰的json格式内容。希望在前台页面中通过ajax获取A,解析后展示。

ajax调用和解析,必然涉及javascript或jquery的工作,并且在js中也需要以json的格式去解析。此时需求:

Rails中

render :text => A.to_json

JS中

$.ajax({
     .....
     success : function( jsonData ){
	var content = $.parseJSON( jsonData );

这样content在js中就为json对象,可以以content.attr来取值


2. Ajax Abort问题

遇到的麻烦:网络速度慢,在第一个ajax应答没有回来的时候就发出了第二个(参数不同)的ajax请求。此时用户希望看到的是第二次请求的结果,然而按照ajax顺序,会先展现第一次的结果,再展现第二次。而这两次展示的间隔可能较长,造成用户误认为结果为第一个返回值。

解决办法:将上一次的ajax请求abort掉,同时,在ajax的success中,判断返回数据是否not null

//定义全局变量 

var current_ajax = null;

//判断是否abort

if (current_ajax){  
  current_ajax.abort();  
  current_ajax = null;
}

//定义ajax

current_ajax = $.ajax({ ...
        success : function(){
		if(curent_ajax){
                      //handle ajax response....


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值