自从网络主机将其支持的 php 版本升级到 5.4 后,我被要求修复已停止正常工作的网页上的脚本,我已经尝试通过 htaccess 文件降级版本但没有成功。
该脚本基本上使用一个非常简单的数据库来存储问题并记录对它们的投票,它使用 Java 来实际显示问题及其答案,我认为这是导致问题的原因。
数据库中有 5 个问题,实际页面本身显示最后一个问题 5 次,这使我怀疑某个变量没有被清除。
这是脚本
$topPart = "";
$botPart = "";
$query = mysql_query("SELECT * FROM questions");
while ($row = mysql_fetch_assoc($query)) {
//display question
$topPart .= "pollNum=" . $row['id'] . ";\n";
$topPart .= "$('#loader'+pollNum).fadeIn();\n";
$topPart .= "$.get('poll.php', 'pollid='+pollNum, function(data, status){\n";
$topPart .= "loadpoll(data, status, '". $row['id'] ."')\n";
$topPart .= "});\n";
$botPart .= "<div id=\"pollcontainer" . $row['id'] . "\" class=\"question\" >". $topPart . "</div>\n";
$botPart .= "<p id='loader" . $row['id'] . "'>Loading...</p>";
我相信这一点工作正常,因为在检查页面时,id 和类都正确编号,它是重复的实际问题,周围的 div 编号正确。这是java...我对Java一无所知...
<script>
$(function(){
var pollNum;
<?php
echo $topPart;
?>
function loadpoll(data, status, pollNum){
//alert(pollNum);
var pollcontainer=$('#pollcontainer'+pollNum);
var loader=$('#loader'+pollNum);
pollcontainer.html(data);
animateResults(pollcontainer);
pollcontainer.find('#viewresult'+pollNum).click(function(){
//if user wants to see result
$('#formcontainer'+pollNum).fadeOut(100, function(){
loader.fadeIn();
$.get('poll.php', 'pollid='+pollNum+'&result=1', function(data,status){
loadpoll(data,status, pollNum);
});
});
//prevent default behavior
return false;
}).end()
pollcontainer.find('#viewvote'+pollNum).click(function(){
//if user wants to see result
$('#formcontainer'+pollNum).fadeOut(100, function(){
loader.fadeIn();
$.get('poll.php', 'pollid='+pollNum, function(data,status){
loadpoll(data,status, pollNum);
});
});
//prevent default behavior
return false;
}).end()
.find('#pollform'+pollNum).submit(function(){
var selected_val=$(this).find('input[name=poll]:checked').val();
if(selected_val!=''){
//post data only if a value is selected
loader.fadeIn();
$.post('poll.php', $(this).serialize(), function(data, status) {
$('#formcontainer'+pollNum).fadeOut(100, function(){
$(this).html(data);
animateResults(this);
loader.fadeOut();
});
});
}
//prevent form default behavior
return false;
});
loader.fadeOut();
}
function showresults(data, status, pollNum){
var pollcontainer=$('#pollcontainer'+pollNum);
var loader=$('#loader'+pollNum);
pollcontainer.fadeOut(1000, function(){
$(this).html(data);
animateResults(this);
pollcontainer.find('#viewvote'+pollNum).click(function(){
//if user wants to see result
loader.fadeIn();
$.get('poll.php', 'pollid'+pollNum, function(data,status){
pollcontainer.fadeOut(1000, function(){
$(this).html(data);
animateResults(pollcontainer);
});
loader.fadeOut();
});
//prevent default behavior
return false;
}).end()
});
loader.fadeOut();
}
function animateResults(data){
$(data).find('.bar').hide().end().fadeIn('slow', function(){
$(this).find('.bar').each(function(){
var bar_width=$(this).css('width');
$(this).css('width', '0').animate({ width: bar_width }, 1000);
});
});
}
});