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>"
                          );

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章