JavaScript FF IE更新+消息脚本问题

时间:2010-02-14 00:18:23

标签: javascript jquery ajax scripting

我有这个ajax_update脚本,每60秒更新一次file.php .. 现在file.php在更新表后输出:

<div id='message' style="display: none;">
    <span>Hey, <b><? echo $userid; ?></b>, You've got +1 points, you now have <u>
    <? echo $n["points"]; ?></u></span>
    <a href="#" class="close-notify" onclick="closeNotice()">X</a>
</div>
<script> 
$("#message").fadeIn("slow");
</script>

为什么这只适用于FF,我的意思是出现,但不是在IE ..

我想要做的是,在file.php更新了数据库中的一个字段(点数)之后,会在顶部出现类似stackoverflow的消息(就像你获得徽章时一样)说你有得到1分。

这在FF中完美无缺,但在IE中,消息根本没有显示?

也许另一种方法可以做到这一点?还是修复,解决方案?

我试着将小JS脚本放在index.php中并删除ajax更新的东西,它在IE中工作正常。

function addpoints()  { 
        var userid = document.getElementById('user_id_points');
        var postFile    =   'addpoints.php?userid='+ userid.value;
  $.post(postFile, function(data){  
  $("#message").fadeIn("slow");
    $("#points").html(data); 
    setTimeout(addpoints, 62000);
  });
}    

function closeNotice() {
    $("#message").fadeOut("slow");
} 

我的ajax脚本^

<?php
include "tilslut.php";
$userid = $_GET["userid"];
$s = mysql_query("SELECT points, lastpoint FROM member_profile WHERE user_id = '".$userid."'");
$n = mysql_fetch_array($s);
$tid = time(); 
mysql_query("UPDATE member_profile set points = points+1, lastpoint=$tid  WHERE lastpoint<=$tid-60 AND user_id = '".$userid."'");
if(isset($userid)) {
$e = mysql_query("SELECT points FROM member_profile WHERE user_id = '".$userid."'");
$f = mysql_fetch_array($e);
echo $n["points"];
}elseif (mysql_affected_rows() == 1) {
$s = mysql_query("SELECT points FROM member_profile WHERE user_id = '".$userid."'");
$n = mysql_fetch_array($s);
?>
If you receive this text, no problem with php
<div id="message"  onclick="closeNotice()">this works
</div>
<?
}else{
?>
This doesnt work at all
<?
}
?>

我的PHP编码,用

2 个答案:

答案 0 :(得分:2)

在您的ajax更新脚本中,请在结果出现后调用此方法:

$("#message").fadeIn("slow");

作为请求的一部分返回的脚本是不可靠的,在这种情况下,将ajax结果函数中的逻辑放在更好的方法中。

试试这个ajax电话:

function addpoints()  { 
  var postFile = 'addpoints.php?userid='+ $('#user_id_points').val();
  $.post(postFile, function(data){
    $("#points").html(data).find("#message").fadeIn("slow")
    setTimeout(addpoints, 62000);
  });
}  

答案 1 :(得分:0)

通过添加一个来解决这个问题 header('Content-type:text / html; charset = utf-8'); 在addpoints.php的顶部