JQuery JSON回调未触发

时间:2014-09-27 12:16:28

标签: jquery json yii callback

我正在使用Yii Framework并尝试在我的gridview上启用CStarRating。在输出HTML源代码中,我有以下内容:

<tr class="odd">
  <td>Bob</td><td>
    <span class="rating" id="6">
    <input id="6_0" value="1" type="radio" name="6" />
    <input id="6_1" value="2" type="radio" name="6" />
    <input id="6_2" value="3" type="radio" name="6" />
    <input id="6_3" value="4" type="radio" name="6" />
    <input id="6_4" value="5" type="radio" name="6" />
    </span>
  </td>
</tr>
<tr class="even">
  <td>Peter</td>
    <span class="rating" id="9">
    <input id="9_0" value="1" type="radio" name="9" />
    <input id="9_1" value="2" type="radio" name="9" />
    <input id="9_2" value="3" type="radio" name="9" />
    <input id="9_3" value="4" type="radio" name="9" />
    <input id="9_4" value="5" type="radio" name="9" />
    </span>
  </td>
</tr>

在HTML正文中,我有以下内容:

<script type="text/javascript">

  jQuery(function($) {
    jQuery('#6 > input').rating({'callback':function(){
                url = "clients/update";
                jQuery.getJSON(url, {id_client: '6', val: $(this).val()},
                function() {
                   if (data.status !== "success"){
                        alert("error");
                   }});}});
    jQuery('#9 > input').rating({'callback':function(){
                url = "clients/update";
                jQuery.getJSON(url, {id_client: '9', val: $(this).val()},
                function() {
                   if (data.status !== "success"){
                        alert("error");
                   }});}});

  });
</script>

但是当我点击明星时没有发生任何事情。我是JQuery和JSON的新手,所以任何帮助都会非常感激。谢谢!

1 个答案:

答案 0 :(得分:0)

忘记HTML和jQuery。使用Yii,您可以使用此行(或类似名称)调用评级星:

$this->widget('CStarRating',array('name'=>'rating'));

如果您想在CallBack上添加Rating Stars,请在options数组中添加回调,如下所示:

$this->widget('CStarRating',array('name'=>'rating','callback'=>'myFunctionCallBack'));

点击星号(see this)时会执行此回调。

Yii CStarRating是基于jQuery Star Rating的小部件,您使用jQuery扩展执行的所有操作都可以使用Yii小部件。所以请look here更多地了解扩展名。

如果您想了解有关该小部件的更多信息(我建议您这样做),请查看文档here

使用小部件的一些例子:

一些属性:

<?php
$this->widget('CStarRating',array(
            'name'=>'rating_1',
            'value'=>'4',
            'minRating'=>1,
            'maxRating'=>10,
            'starCount'=>10,
            ));
?>

使用Ajax:

<?php
$this->widget('CStarRating',array(
    'name'=>'star_rating_ajax',
    'callback'=>'
        function(){
                $.ajax({
                    type: "POST",
                    url: "'.Yii::app()->createUrl('cstarrating/ajax').'",
                    data: "star_rating=" + $(this).val(),
                    success: function(data){
                                $("#mystar_voting").html(data);
                        }})}'
  ));
echo "<br/>";
echo "<div id='mystar_voting'></div>";
?>

有关更多示例,您可以看到this article,将会有所帮助。