rails+jquery+xml+json

1、最近用jquery实现局部刷新,数据是经过ruby查询数据库返回,一开始用render :json => result的写法:

    result = {

                :android_clients=>@query_android_clients,
                :ios_clients=>@query_ios_clients,
                :wp_clients=>@query_wp_clients,
                :all_clients=>@query_all_clients,
                :messages=>@query_messages
              }
    render :json => result

测试发现ff、chrome、ie9等浏览器正常显示,但在ie6、ie7、ie8(兼容版)中无法取出数据(浏览器老是提示对象为空),原来这是因为以上浏览器不支持json格式的数据,网上有资料说jquery定义的jQuery.parseJSON(tempResult)或者引进道格拉斯写的:https://github.com/douglascrockford/JSON-js/blob/master/json2.js文件可以得到解决,照做以后仍然报错。于是将render :json => result改成了render :xml => result,在视图里面用$(tempResult).find("all_clients").text()方法获取值时,还是取不到值,打印result格式如下:

<hash>

<all-clients type="integer">107</all-clients>

<messages type="integer">1948</messages>

<android-clients type="integer">80</android-clients>

<ios-clients type="integer">24</ios-clients>

<wp-clients type="integer">3</wp-clients>

</hash>

光天化日之下,all_clients被莫名其妙的转换成了all-clients,于是改成$(tempResult).find("all-clients").text()就ok了。

另附页面代码如下:

    $(document).ready(function(){
      $("#list").click(function(){
        var res = "";
        var day = $("#client1_ftime1_3i").val();
        var month = $("#client1_ftime1_2i").val();
        var year = $("#client1_ftime1_1i").val();
        var dependence = $("#select1").val();

        //client1[ftime1(1i)]是rails的date_select约定写法,timestamp是为了排除浏览器缓存干扰
        var url = "http://IPAddress/receive?"+"client1[ftime1(1i)]="+year+"&client1[ftime1(2i)]="+month+"&client1[ftime1(3i)]="+day+"&select1="+dependence+"&timestamp="+(new Date()).getTime();
        $.get(url,null,function(tempResult){
          var android_clients = $(tempResult).find("android-clients").text();
          var ios_clients = $(tempResult).find("ios-clients").text();
          var wp_clients = $(tempResult).find("wp-clients").text();

  $("#search").append("<table id='auto_tab' class='table table-striped  table-hover messageList'>"

                                  +"<tr id="+1+">"
                                    +"<th style='width:15%;'>Android</th>"
                                    +"<th style='width:15%;'>IOS</th>"
                                    +"<th style='width:15%;'>WP</th>"
                                  +"</tr>"
                                  +"<tr id="+2+">"
                                    +"<td>"+android_clients+"</td>"
                                    +"<td>"+ios_clients+"</td>"
                                    +"<td>"+wp_clients+"</td>"
                                  +"</tr>"
                                +"</table>"
                          );

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值