簡體   English   中英

如何通過refreshDiv從PHP正確處理JavaScript中的對象XMLHttpRequest

[英]how to correctly handle object XMLHttpRequest in javascript from PHP via refreshDiv

當涉及到Javascript時,我不知道我在做什么,只是嘗試和錯誤方法。 到目前為止,我一直在嘗試着對AJAX和Javascript進行研究,因此請指出正確的方向。 基本上,我需要用PHP =>數據庫生成的數據每隔5s刷新一次DIV,在頁面的首次加載時,一切都很好,因為它直接從PHP獲取數據,但是當Javascript啟動inn時,我得到的只是[object XMLHttpRequest] in DIV內容的位置;

的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>

提前致謝

更改

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

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

該if語句等待服務器成功返回響應,然后執行。 在您的情況下,它等待HTML接收,然后將其插入div。

您嘗試做的事情是錯誤的,原因有兩個:

  1. 您不是要插入響應文本,而是要插入響應對象。 因此,結果很奇怪。
  2. 您不是在等待服務器返回響應。 似乎是因為您將代碼放在底部,所以它已經收到了服務器的響應,但實際上由於請求是異步的並且涉及另一個腳本,因此您將嘗試在收到響應之前進行插入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM