【发布时间】:2013-11-06 04:41:47
【问题描述】:
我正在尝试在“videos.php”页面上完成以下操作(注意,这都是在 PHP 回显中):
- 用户点击.star_'。 $pvid_ID 。 ' 将视频评级提交到表单(这工作正常)
- 现在,我需要刷新显示当前视频评分的 div 以显示更新后的视频评分,该评分存储在变量 $avg_rating 中(在较早的视频查询中从数据库中获取.php)。
- 要更新变量 $avg_rating,我想将视频的 ID 发布到 find_ratings2.php(该视频 ID 当前存储在“videos.php”中作为 $pvid_ID)
这是我在“videos.php”上的 jquery/ajax:
echo'
<script type="text/javascript" language="javascript">
$(document).ready(function() {
$(".star_' . $pvid_ID . '").click(function() {
$.ajax({
type: "POST",
url: \'/dev/scripts/find_ratings2.php\',
data: { videoid: ' . $pvid_ID . ' },
success: function(data) {
$(".parent_video_' . $pvid_ID . '").load(\'testratings.php .vid_frame_id_' . $pvid_ID . '\').hide().fadeIn(2000);
}
});
});
});
</script>
';
然后,在 find_ratings2.php 上我有:
<?php
require('config.php');
require('checklogin.php');
$video_id = $_POST['videoid'];
$mysqlicon3 = mysqli_connect($db_host, $db_username, $db_password, $db_name);
$find_rating = mysqli_query($mysqlicon3, "SELECT AVG(rating) AS avgRating FROM videoRatings WHERE videoID = '$video_id'");
while ($rating_row = mysqli_fetch_array($find_rating)) {
$avg_rating = $rating_row['avgRating'];
}
?>
当 .star_' 。 $pvid_ID 。 ' 被点击,div 被正确刷新(.hide() 和 .fadeIn() 也在工作),但 $avg_rating 没有被更新。
作为参考,$avg_rating 位于“videos.php”上,如下所示:
echo'
<div class="parent_video_' . $pvid_ID . '">
<div class="comment_iconimg-stars vid_frame_id_' . $pvid_ID . '">
<div class="video-stars"><input class="imgstar star_' . $pvid_ID . '" type="image" src="';
if ($avg_rating > 0){echo '/dev/images/rate_video_icon_yellow.png';} else{echo '/dev/images/rate_video_icon.png';}
echo '" border="0" /></div>
</div>
</div>
</div>';
【问题讨论】:
-
第一个建议,基本的 HTML 和 JavaScript 代码不应由 PHP 打印。它对 PHP 解析器无用,对可维护性非常不利
-
它仅作为 PHP 回显打印,因为它是打印来自特定查询的所有结果的“while”语句的一部分
标签: javascript php jquery ajax