2014-09-28 116 views
1

我有一个div的内容被这样产生......阿贾克斯的fancybox密切刷新

<div class="messagecount"> 
<?php 
$mesagecount = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM " . $wpdb->base_prefix . "messages WHERE message_to_user_ID = %d", $user_ID)); 
echo $messagecount; 
?> 
</div> 

我也是用的fancybox弹出一个消息,我有回调的设置,这样,当我关闭fancybox我可以调用一个命令,但现在我希望能够刷新messagecount div而不刷新页面。

我可以使用ajax与fancybox关闭回调结合使用吗?

+0

就可以了,既您Ajax调用的fancybox(如果你使用的是什么,我认为你是)实际上是Ajax调用,易于peasy ...你尝试过什么? – webeno 2014-09-28 16:13:27

+0

这些信息在哪里?更新消息计数div的信息? – 2014-09-28 16:13:38

回答

0

是的。 首先,分配给你的div id“messagecount”。 然后,把你的文件头部分以下代码:

<script> 
function ajaxRequest(){ 
var activexmodes=["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"] 
if (window.ActiveXObject){ 
    for (var i=0; i<activexmodes.length; i++){ 
    try{ 
    return new ActiveXObject(activexmodes[i]) 
    } 
    catch(e){ 
    } 
    } 
} 
else if (window.XMLHttpRequest) 
    return new XMLHttpRequest() 
else 
    return false 
} 
</script> 

现在,创建load.php并把它付诸表决:

<?php 
$mesagecount = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM " . $wpdb->base_prefix . "messages WHERE message_to_user_ID = %d", $user_ID)); 
echo $messagecount; 
?> 

要重新加载框,只需把下面的代码后:

<a href="#" onclick="sending(); return false;">Reload</a> 
<script> 
    function sending(){ 
    document.getElementById("messagecount").innerHTML="Refreshing" 
    var mypostrequest=new ajaxRequest() 
    mypostrequest.onreadystatechange=function(){ 
    if (mypostrequest.readyState==4){ 
     if (mypostrequest.status==200 || window.location.href.indexOf("http")==-1){ 
     document.getElementById("messagecount").innerHTML=mypostrequest.responseText 
     } 
     else{ 
     document.getElementById("messagecount").innerHTML='Woops! An error occurred. Please check your Internet connection and try again.'; 
     } 
    } 
    } 
    mypostrequest.open("GET", "load.php", true) 
    mypostrequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded") 
    } 
</script> 
当然