2014-11-06 3 views
0

Я не уверен, как это сделать, я искал Google и просматривал stackoverflow, но ничего не нашел, я нашел iterate over raty, но это была не та же проблема.Iterate over non jquery function/plugin

Вот моя проблема. Я использую 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

Вы уверены, что первая часть работает? Вы не возвращаете действительный json из своего php-скрипта. – jeroen

+0

@jeroen да, первая часть работает Я возвращаюсь jsonp – Keez

+1

Похоже, вы хотите элемент '# star' для всего, что вы добавляете в' # care'. Вам нужно будет изменить свою разметку, чтобы вы не вызывали '.raty' в том же элементе в каждой итерации цикла. –

ответ

1

EDIT

Andre имеет право в комментарии. Вы всегда прикрепляете .raty к #star. Добавьте div с id="rate{uniqueidhere}" в #care, добавьте его перед 2-мя линиями и присоедините .raty к этому недавно добавленному элементу.

+0

У меня нет проблем с отображением объекта, я хочу отобразить систему оценки .raty' для каждой итерации. – Keez

+0

Обновлен мой ответ. – vaso123

+0

thx для быстрой обратной связи, похоже, что он приближается, но пока нет. Я добавил 'var'' para = $ ('

'+'
'); 'и приложил' .raty' к нему '$ ('# rate'). Raty' теперь отображается на первой итерации, но не на всех. – Keez