Я не уверен, как это сделать, я искал 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>
Вы уверены, что первая часть работает? Вы не возвращаете действительный json из своего php-скрипта. – jeroen
@jeroen да, первая часть работает Я возвращаюсь jsonp – Keez
Похоже, вы хотите элемент '# star' для всего, что вы добавляете в' # care'. Вам нужно будет изменить свою разметку, чтобы вы не вызывали '.raty' в том же элементе в каждой итерации цикла. –