2014-02-07 41 views
0

當涉及到Javascript我不知道我在做什麼只是嘗試和錯誤的方法。一直試圖做我的AJAX和Javascript的研究,迄今爲止沒有運氣,所以請指出我的方向是正確的。 基本上我需要刷新一個DIV每個讓我們說5s與從PHP生成的數據=>數據庫, 在頁面的第一次加載一切都很好,因爲它直接從PHP獲取數據,但是當JavaScript踢了客棧我得到的是[object XMLHttpRequest ]代替DIV內容;如何通過refreshDiv在PHP中正確處理對象XMLHttpRequest

HTML

<script type="text/javascript"></script> 
<script> 
    window.setInterval("refreshDiv()", 5000); 
    function refreshDiv(){ 
     var request = new XMLHttpRequest(); 
     request.onreadystatechange = function() { 
      if (request.readyState == 4 && request.status == 200) { 
       console.log(request.responseText); 
      } 
     } 
     request.open('GET', 'http://www.mysite.com/getuserinfo.php', true); 
     request.send(); 
     document.getElementById("usinfo").innerHTML=request; 
    } 
</script> 
</head> 
<body> 
<div id="page"> 

然後DIV

<div id="usinfo" class="wrap"> 
    <?php include("getuserinfo.php"); ?> 
</div> 

而且PHP是這樣的:提前

require_once('../mysqli_connect.php'); 
$userid = 1000042; 
$us_credit = 0 ; 
$us_prof_view = 0 ; 
$us_new_msg = 0 ; 

//Get $us_credit , $us_prof_view , $us_new_msg 
$q="SELECT ac_ballance, prof_views, COUNT (msg_id) AS messages FROM user_details INNER JOIN com_msg ON us_name = msg_to WHERE user_id =".$userid." AND msg_new =1"; 
$r = mysqli_query($dbc,$q); 
if(mysqli_num_rows($r)== 1) { 
    $us_data = mysqli_fetch_array($r,MYSQLI_ASSOC); 
    $us_credit = $us_data['ac_ballance']; 
    $us_prof_view = $us_data['prof_views']; 
    $us_new_msg = $us_data['messages']; 
} 
mysqli_free_result($r); #not needed 
?> 

<p class="whtxt">Your Credits :&nbsp; 
    <?php echo $us_credit ; ?> 
    &nbsp;Profile views :&nbsp; 
    <?php echo $us_prof_view ; ?> 
    &nbsp; 
    <a class="whtxt" href="http://www.mysite.com/inbox">New Messages :&nbsp; 
     <?php echo $us_new_msg ; ?> 
    </a>&nbsp; 
</p> 

感謝

+0

您忘記使用'.responseText'設置'innerHTML' –

+1

還您innerHTML的設置應該發生在onreadystatechange的回調,就在控制檯日誌 –

+0

剛加入.responseText何時,什麼也不做,我得到絕對沒有什麼 – bart

回答

0

變化

if (request.readyState == 4 && request.status == 200) { 
    console.log(request.responseText); 
} 

if (request.readyState == 4 && request.status == 200) { 
    document.getElementById("usinfo").innerHTML=request.responseText; 
} 

如果成功的響應從服務器返回的語句等待,然後執行此。在你的情況下,它會等待接收到的HTML然後插入到div中。

你正在嘗試做的是錯的,原因有二:

  1. 你不插入響應文本,你想插入響應對象。因此,奇怪的結果。
  2. 您並不等待服務器返回的響應。看起來好像是因爲你把代碼放在最底部,它已經收到了服務器的響應,但實際上,因爲請求是異步的並且涉及到另一個腳本,所以在你收到響應之前,你會嘗試插入。
+0

哇,簡單的大感謝像魅力一樣。 – bart