将AJAX应用于评级系统

时间:2014-03-25 11:46:23

标签: javascript php jquery html ajax

所以我创建了这个评级系统,它将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 个答案:

答案 0 :(得分:1)

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

1。)创建一个新的PHP,读取文本文件并获取新的&#39; Count&#39;投票或分数&#39;无论你要发送什么信息。对于简单的用法,我只是回应这个值。

2。)添加一些Javascript以在我们添加用户数后获取此值。

以下示例概述了概念(来自W3Schools - http://www.w3schools.com/php/php_ajax_database.asp)。此示例将使用css&#39; ID&#39;将返回值替换为网页。 &#39; txtHint&#39;。这个特殊的例子也可以获取整个页面并将其加载到此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>

这应该会帮助你,如果你努力让它工作回发你的代码并且可以从那里进行调试。