将AJAX应用于评级系统


Applying AJAX to rating system

所以我创建了这个评分系统,根据用户点击的星星将1-5号发送到一个文本文件。在同一页面上,我们有一个计数器,用于计算投票数和所有投票的总数。

进度很好,但我想改进一下。

下面是我的代码:
<form name="Star" id="Star">    
    <div id="rating-area" class="shadow">   
    <img src="star-icon.png" id="thumb1" data-value="1" />
    <img src="star-icon.png" id="thumb2" data-value="2" />
    <img src="star-icon.png" id="thumb3" data-value="3" />
    <img src="star-icon.png" id="thumb4" data-value="4" />
    <img src="star-icon.png" id="thumb5" data-value="5" />
    </div>

</form>

<script>

   jQuery('div#rating-area img').click(function(e){
        var val = jQuery(this).data('value') ;
        console.log(val) ;
        jQuery.post('post.php',{ Star : val },function(data,status){
            console.log('data:'+data+'/status'+status) ;
        }) ;
    }) ;
</script>

<?php
    $file = file("textfile.txt");
    $textfil = file_get_contents("textfile.txt");
    $textfill = str_split($textfil);

    echo "Number of votes in file: " . count($textfill) . "<br>";
    $sum = 0;
    foreach ($textfill as $vote) {
        $sum = $sum + intval($vote);
    }
    echo "Total: " . $sum;
?>

我有点新的这个php,但是否有可能做一个AJAX请求,这样我们就不必重新加载页面,以获得更新的计数数字?

我需要帮助的是创建一个AJAX调用,所以当用户点击一个星号时,页面将从文本文件中调用数据,而无需重新加载整个页面。

我认为我张贴了所有必要的信息,如果没有,请告诉我,我会编辑并尽量给你的信息。

首先,我宁愿将这些信息存储在数据库中而不是文本文件中,但概念是相同的。

1)。创建一个新的PHP,读取文本文件,并获得新的"计数"的投票或"得分"的任何信息,你想发回。为了简单的使用,我只回显这个值。

2)。添加了用户数之后,再添加一些Javascript来获取这个值。

下面的例子给出了一个很好的概念概述(来自W3Schools - http://www.w3schools.com/php/php_ajax_database.asp)。这个例子将使用'txtHint'的css 'ID'替换返回值到网页中。这个特定的例子也会获取整个页面并将其加载到这个ID中,如果您只是将该值回显到浏览器中,这将是很好的。

<script>
function showUser(str)
{
if (str=="")
  {
  document.getElementById("txtHint").innerHTML="";
  return;
  } 
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","getuser.php?q="+str,true);
xmlhttp.send();
}
</script>

这应该会帮助你,如果你挣扎着让它工作post回你的代码,可以从那里调试