Javascript AJAX在评级系统中的应用

Javascript AJAX在评级系统中的应用,javascript,php,jquery,html,ajax,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" />

因此,我创建了一个评级系统,它将数字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;
?>

jQuery('div#评级区域img')。单击(函数(e){
var val=jQuery(this).data('value');
控制台日志(val);
jQuery.post('post.php',{Star:val},函数(数据,状态){
console.log('data:'+data+'/status'+status);
}) ;
}) ;
我对这个php有点陌生,但是是否可以做一个AJAX请求,这样我们就不必重新加载页面来获得更新的计数

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


我想我已经发布了所有必要的信息,如果没有,请告诉我,我会编辑并尝试向您提供这些信息。

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

1.)创建一个新的PHP,它读取文本文件并获取新的“票数”或“分数”,无论您想发回什么信息。对于简单的用法,我只会回显这个值

2.)在添加用户数后,再添加一些Javascript以获取此值

下面的示例很好地概述了这个概念(来自W3Schools-)。此示例将获取返回值,然后将其替换为css“ID”为“txtHint”的网页。这个特定的示例还获取整个页面并将其加载到此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>

函数showUser(str)
{
如果(str==“”)
{
document.getElementById(“txtHint”).innerHTML=“”;
返回;
} 
if(window.XMLHttpRequest)
{//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}
其他的
{//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=函数()
{
if(xmlhttp.readyState==4&&xmlhttp.status==200)
{
document.getElementById(“txtHint”).innerHTML=xmlhttp.responseText;
}
}
open(“GET”、“getuser.php?q=“+str,true”);
xmlhttp.send();
}

这应该会帮助你,如果你很难让它工作的话,请发回你的代码,然后再进行调试。

我对这一点完全陌生,所以我可能有点慢。但是我创建了一个新页面,并复制了从textfile.txt获取值的php代码。我正在为你发布的代码而挣扎。我不知道里面应该放些什么。我想应该是我的textfile.txt在getelementbyid的()中?在xmttp.open(“GET”…)中,这里发生了什么?您是否创建了一个PHP文件来读取txt文件并提供答案并将其回送到页面?我创建了一个名为ajax.PHP的新文件,在其中粘贴了PHP计数代码。我不知道如何把它回复到主页上。它是“include”(“ajax.php”);echo$sum吗?只需浏览并查看它是否显示在浏览器中。好的开始,这是在没有SQL DB会使事情变得困难的时候。您需要返回给定产品的单个数字计数或任何您正在评级的数字。因此实现
$ID=$\u GET['ID']
我们可以使用Get,因为它比Get快。然后在URL的末尾添加
?ID=1
。在txt文件中使用与产品或您的评级匹配的ID,然后只返回单个数字。(这部分使用MySQL会容易得多,我建议先学习MySQL,然后再将ajax/php添加到txt文件中),但要做到这一点。