2014-09-27 90 views
0

我正在使用Yii Framework并尝试在我的GridView上启用CStarRating。在输出HTML源代码,我有以下:JQuery JSON回调未触发

<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的新手,所以任何帮助将不胜感激。谢谢!

+0

首先:请不要使用数字作为ID。 – 2014-09-27 12:19:23

+0

谢谢,我现在在前面连接了一个字符串,但仍然没有发生任何事情。我想我可能需要一些脚本来加载boydy onLoad,但我不确定:( – Ackley 2014-09-27 12:24:47

+0

在点击函数中放置一个警报,并查看点击事件是否被触发 – 2014-09-27 12:27:32

回答

0

忘记HTML和jQuery。使用Yii你有这样的行(或类似的东西)调用评价星级:如果您whant把一个CallBackRating Stars

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

,你添加回调的选项阵中,像这样:

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

单击这些星号时将执行此回调(see this)。

Yii CStarRating是一个基于jQuery Star Rating的小部件,您可以使用jQuery扩展完成的任何工作,您可以使用Yii小部件来完成。因此,请拨打look here以获得有关扩展的更多信息。

如果你想知道更多关于这个小部件的信息(我推荐),看文档here

使用widget的一些exemples:

一些性质:

<?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>"; 
?> 

更多exemples,你可以看到this article,将帮助哟。

+1

非常感谢你花时间来帮助。事实上,我的问题更加复杂。对于单个CActiveRecord来说,这是事实,但我试图对CGridView进行投票。 http://www.yiiframework.com/forum/index.php/topic/57769-problem-with-ajax-and-jquerygetjson-callback/。如果有任何建议,我将不胜感激,再次感谢您! – Ackley 2014-09-27 15:47:10