2014-09-28 81 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> 
當然