2014-11-06 72 views
0

我不知道如何做到這一點,我GOOGLE和搜索通過stackoverflow但沒有,我確實發現iterate over raty,但那不是真正的同樣的問題。迭代非jQuery的功能/插件

這是我的問題。我使用ajax從php腳本中獲取數組,以查詢MySQL數據庫的結果。一切都很簡單,它返回一個數組。以下是rate.php文件。然後,我使用$.each遍歷數組顯示在div我想要做的是將.raty評級系統添加到每個迭代。目前,評分系統(星號)被添加到所有記錄的底部/末端而不是每次迭代。我怎樣才能做到這一點?下面是代碼

'rate.php' 文件,在一個陣列

<?php 
    require_once("../auth/config.class.php"); 
    require_once("../pages/request.class.php"); 


    $config = new Config; 

    $dbh = new PDO("mysql:host=" . $config-> dbhost . ";dbname=" . $config->dbname, $config->dbuser, $config->dbpass); 

    $request = new Request($dbh, $config); 

    $rateme = $request->rateCare(); 

     echo $_GET['callback'] . '('.json_encode($rateme).')'; 
     //echo json_encode($rateme); 
     // var_dump($rateme); 

    ?> 

HTML文件返回結果,顯示結果 rating.php

<?php 

    $page_title = "IntelyCare: Rating "; 
    //$page_description = "Description of this page"; 
    require_once ("../template/header.php"); 
    ?> 

    <body> 



    <div data-role="page"> 
    <script type="text/javascript"> 

    $(document).ready(function() 
    { 


     $.ajax({ 
      type: "GET", 
      cache:false, 
      url: "../pages/rate.php", 
      dataType:'jsonp', 

      success: function(data){ 
        $.each(data, function() 
        { 

         $('#care').append("Date: " + this.caredate + '<br/ >'); 
         $('#care').append("Care Giver: " + this.fname + " " + this.lname); 
         $('#care').append('<br />'); 
         $('#care').append('<br />'); 

         $('#star').raty({ 
          starType: 'i', 
          hints: ['Poor', 'Ok', 'Good', 'Very Good', 'Excellent' ]  
          }); 

        }); 


           } 
       }); 

    });     


      </script> 
    <div data-role="header" > 
     <h1>IntelyCare</h1> 
    </div> 

    <div data-role="main" data-theme="a" class="ui-content"> 
     <div data-role="content"> 
     <h3>Rate Caregiver</h3> 
      <div id="care"> 

      </div> 
      <div id="star"></div> 
     </div> 
    </div> 
    </div> 
    </body> 
    </html> 

更新工作Javascript

$(document).ready(function() 
    { 

     $.ajax({ 
      type: "GET", 
      cache:false, 
      url: "../pages/rate.php", 
      dataType:'jsonp', 

      success: function(data){ 
        $.each(data, function(id, obj) 
        { 
         divid= obj.id 
         para = $('<div id="'+ divid + ' ">'+'</div>'); 
         $('#care').append("Date: " + obj.caredate + '<br/ >'); 
         $('#care').append("Care Giver: " + obj.fname + " " + obj.lname); 
         $('#care').append(para); 
         $('#care').append('<br />'); 
         $('#care').append('<br />');        
         $(para).raty({ 
          starType: 'i', 
          hints: ['Poor', 'Ok', 'Good', 'Very Good', 'Excellent' ]  
          }); 

         }); 



        } 


       }); 
    });     
    </script> 
+0

你確定第一部分工作?你沒有從你的php腳本中返回有效的json。 – jeroen 2014-11-06 15:55:36

+0

@ jeroen是的,第一部分作品我回來了jsonp – Keez 2014-11-06 15:58:06

+1

這聽起來像是你想要一個'#星號'元素爲你附加到'#care'的所有東西。您需要更改標記,以便在每次循環迭代中的同一元素上不調用'.raty'。 – 2014-11-06 16:05:35

回答

1

編輯

安德魯在評論中有權利。您始終將.raty附加到#star。將id="rate{uniqueidhere}"添加到#care,在2個換行符之前添加div,並將.raty附加到該新添加的元素。

+0

我沒有任何問題顯示對象,我想爲每個迭代顯示'.raty'評分系統。 – Keez 2014-11-06 16:02:36

+0

更新了我的答案。 – vaso123 2014-11-06 16:16:11

+0

thx爲快速反饋,它似乎越來越接近,但還沒有。我添加了一個'var''para = $('

'+'
');'並將'.raty'附加到'$('#rate')。raty'上,現在在第一次迭代中顯示,但不是全部。 – Keez 2014-11-06 16:26:07