我正在使用此站点上的源代码:
http://webtint.net/tutorials/5-star-rating-system-in-php-mysql-and-jquery/comment-page-1/#comment-2562
一个很棒的资源,我想你们都会同意,但我的问题是我的Javascript似乎并没有真正执行PHP脚本……
当我在Chrome的调试器中为倒数第二行(之前)添加断点时; ):
$("[id^=rating_]").children("[class^=star_]").click(function() {
var current_star = $(this).attr("class").split("_")[1];
var rid = $(this).parent().attr("id").split("_")[1];
$('#rating_'+rid).load('http://localhost:8888/fivestars/send.php', {rating: current_star, id: rid});
});
正如您所期望的那样,它会在断点处成功停止.但是我只是无法让send.php实际做任何事情,它根本就不会!正如您从代码中看到的,我使用了绝对URL,但它不适用于相对URL或仅在该位置使用send.php.我已经在send.php中放置了代码,将“成功”写入数据库,这样我就可以测试它是否正在执行 – 但显然不是.
有没有人有任何想法?
谢谢!
插口
编辑:刚刚尝试使用此代码代替我以前使用的代码:
$('#rating_'+rid).load('send.php', function () {alert('Load was performed.');});
对话框显示正确,所以我确信它正在工作.
作为参考,send.php的PHP代码是:
<?php
$rating = (int)$_POST['rating'];
$id = (int)$_POST['id'];
$this->db->query("INSERT INTO code (rating) VALUE (8)");
$query = $this->db->query("SELECT * FROM code WHERE id = '".$id."'");
while($query->row()) {
if($rating > 5 || $rating < 1) {
echo"Rating can't be below 1 or more than 5";
}
elseif(isset($_COOKIE['rated'.$id])) {
echo"<div class='highlight'>You've already voted, sorry!</div>";
}
else {
setcookie("rated".$id, $id, time()+60*60*24*365);
// $total_ratings = $row['total_ratings'];
$total_ratings = $query->row('total_ratings');
$total_rating = $query->row('total_rating');
$current_rating = $query->row('rating');
$new_total_rating = $total_rating + $rating;
$new_total_ratings = $total_ratings + 1;
$new_rating = $new_total_rating / $new_total_ratings;
// Lets run the queries.
$this->db->query("UPDATE test SET total_rating = '".$new_total_rating."' WHERE id = '".$id."'");
$this->db->query("UPDATE test SET rating = '".$new_rating."' WHERE id = '".$id."'");
$this->db->query("UPDATE test SET total_ratings = '".$new_total_ratings."' WHERE id = '".$id."'");
echo"<div class='highlight'>Thanks for your vote!</div>";
}
}
?>
对不起,这有点乱,但我一直在将默认的PHP代码迁移到我的CodeIgniter库.
最佳答案 要检查的第一件事是来自Web服务器的访问和错误日志,以查看请求是否实际到达Web服务器.