2012-12-12 68 views
-2

查看每個進程中的錯誤框。PHP JQuery五星級評分系統錯誤

saveRating.php PHP代碼

<?php 
    $result = array(); 
    $result["status"] = ""; 
    $result["message"] = ""; 

    if(isset($_POST["itemID"]) && isset($_POST["itemValue"])){ 
     $result["status"] = "OK"; 
     $result["message"] = "Rating has been saved successfully."; 
    } else { 
     $result["status"] = "ERROR"; 
     $result["message"] = "Provide itemID and itemValue!"; 
    } 

    echo json_encode($result); 
?> 

HTML代碼

<body> 
    <h1>Creating Five Stars Rating System</h1> 
    <div class="fieldRow"> 
     <label>Book 123A</label> 
     <ul id="book-123a" class="ratingStars"> 
      <li></li> 
      <li class="active"></li> 
      <li></li> 
      <li></li> 
      <li></li> 
     </ul> 
    </div> 
    <div class="fieldRow"> 
     <label>Book 123B</label> 
     <ul id="book-123b" class="ratingStars"> 
      <li class="active"></li> 
      <li></li> 
      <li></li> 
      <li></li> 
      <li></li> 
     </ul> 
    </div> 
    <div class="fieldRow"> 
     <label>Book 123C</label> 
     <ul id="book-123c" class="ratingStars"> 
      <li></li> 
      <li></li> 
      <li></li> 
      <li></li> 
      <li class="active"></li> 
     </ul> 
    </div> 

    <div id="placeHolder"></div> 
</body> 

jQuery代碼

<script> 
$(document).ready(function(){ 
    $('ul.ratingStars li.active').prevAll().addClass('active'); 

    $('ul.ratingStars li').each(function(){ 
     var $item = $(this); 
     var $itemContainer = $item.parents('ul.ratingStars'); 
     var containerID = $itemContainer.attr('id'); 
     var $itemsAll = $itemContainer.find('li'); 

     $item.mouseover(function(){ 
      $itemsAll.addClass('default'); 
      $item.prevAll().addClass('highlighted'); 
     }).mouseout(function(){ 
      $itemsAll.removeClass('default').removeClass('highlighted'); 
     }).bind('click', function(){ 
      var itemIndex = $itemsAll.index(this); 

      $.post('ajax/saveRating.php',{ 
       'itemID': containerID, 
       'itemValue': itemIndex 
      }, function(data) { 
       if(data && data.status == "100"){ 
        $item.addClass('active').removeClass('highlighted'); 
        $item.nextAll().removeClass('active'); 
        $item.prevAll().addClass('active'); 
       } else { 
        alert('Error!'); 
       } 
      }, "json"); 
     }); 
    }); 
}); 
</script> 

個CSS代碼

<style> 
    label, ul { 
     float:left; 
    } 
    .fieldRow { 
     clear:both; margin:5px 0px; overflow:hidden; 
    } 
    ul.ratingStars { 
     list-style:none; margin:0px 0px; 
     overflow:hidden; 
    } 
    ul.ratingStars li { 
     float:left; width:16px; height:16px; 
     background:url('icons/star.gif') no-repeat left top; 
     cursor:pointer; 
    } 
    ul.ratingStars li.active { 
     background-position: 0px -32px; 
    } 
    ul.ratingStars li.default { 
     background-position: 0px 0px; 
    } 
    ul.ratingStars li.highlighted, ul.ratingStars li:hover { 
     background-position: 0px -16px; 
    } 
</style> 

明星的img文件

http://www.packtpub.com/sites/default/files/Article-Images/3081_02_06.png

始終alert('Error!');請幫

+3

所以,這段代碼有一個錯誤,你希望我們看看,只是告訴你錯誤是什麼?你嘗試過自己調試嗎? –

+0

需要認真編輯,閱讀常見問題解答並請嘗試更加緊密地定位錯誤。另外'alert('Error!');'看起來像是沒有出現在代碼中的任何地方的javascript。 –

回答

2

在你jquery code您檢查

if(data && data.status == "100") { 

但在你的saveRating.php php code設置status爲任何

$result["status"] = "OK"; 

$result["status"] = "ERROR"; 

因此你的JavaScript檢查false

+0

其實你是對的。我沒意識到。這個問題解決了。謝謝@Matteo Tassinari。 –