2012-03-09 80 views
1

对不起,如果标题是一点..模糊我不能把它钉住。jQuery页面刷新不能读取或执行php

因此,我正在开发一个朋友请求系统,它的工作原理与Facebook的概念类似。所以你得到一个请求,并列出他们没有页面重新加载。

但是我得到div'刷新'或所以我认为我不能测试的PHP这是我有一个问题,我会发布相关的代码和文件下面。

它看起来有点长,但它在现实中应该太糟糕了。我的php代码应该继续执行正在查看updateFriendBox.php中的数据库的查询,但它似乎没有这样做。我的代码也可能很乱,所以我很抱歉。

myaccount.php

<script src="http://code.jquery.com/jquery-latest.js"></script> 
<script language="javascript" type="text/javascript"> 
function refreshDiv() 
{ 
    $.get('updateFriendBox.php', function(data){$('#refresh').html(data);}); 
} 
$(function() 
{ 
    refreshDiv(); 
    setInterval(refreshDiv, 5000); 
}); 


function box(x){ 
    if($('#'+x).is(":hidden")){ 
     $('#'+x).slideDown(200); 
    } else { 
     $('#'+x).hide(); 
    } 
} 
</script> 

<?php 
$addBox = '<div style="display:inline; padding:5px;"> 
<a href="#" onclick="return false" onmouseup="javascript:box(\'fRequ\');">Show/Hide Friend Requests</a> 
</div>'; 

// a bit further down in the code where its all called: 

<a href="#" class="tooltip"><? echo $addBox; ?></span></a> 
      <div class="friendSlide" id="fRequ" style="height:240px; overflow:auto;">Your friend requests: <br /> 
      <div id="refresh"> <?php // this is where the refresh call is ?> 
     </div> 
     </center> 
     </div> 
</div> 
</div> 

updateFriendBox.php:

<script src="http://code.jquery.com/jquery-latest.js"></script> 
<script language="javascript" type="text/javascript"> 
function acceptFriendRequest(x) { 
    var url = "friendParse.php"; 
    $.post(url,{ request: "acceptFriend", reqID: x}, function(data){ 
     $("#req"+x).html(data).show().fadeOut(5000); 
    }); 
} 

function denyFriendRequest(x) { 
    var url = "friendParse.php"; 
    $.post(url,{ request: "denyFriend", reqID: x}, function(data){ 
     $("#req"+x).html(data).show().fadeOut(5000); 
    }); 
} 
</script> 
</head> 
    <body> 
     <?php 
     include 'dbc.php'; 
     $sql = "SELECT * FROM friendRecu WHERE mem2='" . $_SESSION['user_id'] . "' ORDER BY id ASC LIMIT 10"; 
     $query = mysql_query($sql)or die(mysql_error()); 
     $num_rows = mysql_num_rows($query); 
     if($num_rows < 1) { 
      echo "No friend requests"; 
     } else { 
      while($row = mysql_fetch_array($query)){ 
       $requestID = $row['id']; 
       $req = $row['mem1']; 
       $sqlName = mysql_query("SELECT full_name FROM users WHERE id='$req'"); 
       while($row = mysql_fetch_array($sqlName)){ 
        $requesterName = $row['full_name']; 
       } 
       echo '<hr /><table width="100%", cellpadding="5"><tr><td width="17%" align="left"><div style="overflow:hidden; height:50px; color:white;"></div></td> <td width="83%"><a href=viewmembers.php?uid=' . $req . '">' . $requesterName . '</a> added you as a friend 
       <span id="req' . $requestID . '"> 
       <a href="#" onclick="return false" onmousedown="javascript:acceptFriendRequest(' . $requestID . ');">Accept</a> 
       &nbsp; || &nbsp; 
       <a href="#" onclick="return false" onmousedown="javascript:denyFriendRequest(' . $requestID . ');">Deny</a> 
       </span></td></tr> 
       </table>'; 
      } 
     } 
     ?> 
+1

尝试使用控制台进行调试js。 '使用此代码并将结果更新到我们:'$ .get('updateFriendBox.php',function(data){('#refresh')。html(data); alert('Load was performed。') ; });' – 2012-03-09 19:25:05

+1

事实上,你需要使用萤火虫或一些日志记录,以找出哪里出了问题,或至少获得更多的信息。 – 2012-03-09 19:28:18

+0

它一直弹出“执行加载” – Jack4 2012-03-09 19:35:27

回答

2

我觉得你有一个问题,因为你的updateFriendBox.php返回了太多。删除所有内联JS代码,将其放在包含文件中,并从myaccount.php中包含它。你的updateFriendBox.php文件中也不应该有<head> and <body>部分。

这里的ajax调用并不会创建一个全新的页面,您将获得额外的HTML添加到原始页面。

因此,您应该拥有的唯一东西就是您的SQL查询,循环以及每个数据行的HTML输出。

+0

还有一件事,这更多的是一个建议。每5秒钟对一个计时器进行ajax调用并不是处理保持该方框更新的最佳方式。 5秒不足以处理较慢的互联网连接,这将在您的服务器上产生大量的流量/负载。也许每分钟更换一次,或者更好,然后研究一下称为长轮询的事情。 – AndrewR 2012-03-09 19:47:03

+0

嘿,对不起声音愚蠢(即时通讯新的这一点),但“内联js代码”你的意思是接受和拒绝朋友位?你可以稍微扩展一下:“你也应该在你的updateFriendBox.php文件中有章节。”非常感谢您花时间帮助:-) – Jack4 2012-03-09 19:48:14

+0

我的坏,'应该有'和'部分'的错字,我已经修复了。 – AndrewR 2012-03-09 19:49:22