2014-11-06 70 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